YunaiV / ruoyi-vue-pro

🔥 官方推荐 🔥 RuoYi-Vue 全新 Pro 版本,优化重构所有功能。基于 Spring Boot + MyBatis Plus + Vue & Element 实现的后台管理系统 + 微信小程序,支持 RBAC 动态权限、数据权限、SaaS 多租户、Flowable 工作流、三方登录、支付、短信、商城、CRM、ERP、AI 大模型等功能。你的 ⭐️ Star ⭐️,是作者生发的动力!
https://doc.iocoder.cn/
MIT License
26.85k stars 5.7k forks source link

有大佬实现了不带redis的版本了吗 #645

Closed zby-fendou closed 3 weeks ago

zby-fendou commented 3 weeks ago

碰到问题,请在 https://github.com/YunaiV/ruoyi-vue-pro/issues 搜索是否存在相似的 issue。

不按照模板提交的 issue,会被系统自动删除。

基本信息

你猜测可能的原因

(必填)我花费了 2-4 小时自查,发现可能的原因是:xxxxxx

复现步骤

第一步,

第二步,

第三步,

报错信息

带上必要的截图

YunaiV commented 3 weeks ago

在一些场景下,不希望有 Redis 依赖,也有很多用户提出类似的诉求:

但是,项目大量使用了 Redis 作为缓存、分布式锁、幂等性等功能,所以直接去除 Redis 会导致项目无法正常运行。

不过,我们可以换个思路,使用 jedis-mock 库,在项目启动时,自动启动一个 Mock 的 Redis 服务,这样就可以实现不依赖 Redis 的运行。

1. 如何启动?

① 在 yudao-server 模块的 pom.xml 文件中,添加 jedis-mock 依赖:

        <dependency>
            <groupId>com.github.fppt</groupId>
            <artifactId>jedis-mock</artifactId>
            <version>1.1.2</version>
        </dependency>

然后,记得需要在 IDEA 中,刷新 Maven 依赖。

② 在 YudaoServerApplication 的 main 方法的开头,添加“启动 Redis 服务”的如下代码:

import com.github.fppt.jedismock.RedisServer;

public class YudaoServerApplication {

    public static void main(String[] args) {
        // 启动 Redis 服务
        RedisServer redisServer = new RedisServer(6379);
        try {
            redisServer.start();
        } catch (IOException e) {
            throw new RuntimeException(e);
        }

        SpringApplication.run(YudaoServerApplication.class, args);
    }

}

之后,启动 YudaoServerApplication 即可。

③ 打开管理后台,进行登录测试。如果登录成功,说明 Redis 已经被成功替换。

2. 常见问题?

① 启动的时候,出现如下的报错信息,可以直接忽略。

2024-09-02 09:34:03.166 |  WARN 57508 | redisson-netty-1-2 [TID: N/A] o.s.b.a.d.r.RedisReactiveHealthIndicator | Redis health check failed

java.lang.IllegalArgumentException: Value must not be null
    at org.springframework.util.Assert.notNull(Assert.java:172)
    at org.springframework.boot.actuate.health.Health$Builder.withDetail(Health.java:247)
    at org.springframework.boot.actuate.data.redis.RedisHealth.up(RedisHealth.java:37)
    at org.springframework.boot.actuate.data.redis.RedisReactiveHealthIndicator.up(RedisReactiveHealthIndicator.java:73)
    at org.springframework.boot.actuate.data.redis.RedisReactiveHealthIndicator.lambda$getHealth$4(RedisReactiveHealthIndicator.java:69)

② 如果你在多个主机上部署了 Java 服务,无法使用这个方案。如果你在一个主机上部署了多个 Java 服务,可以使用这个方案。

原因是:jedis-mock 是在当前主机上启动的 Redis 服务,无法在多个主机上共享。

YunaiV commented 3 weeks ago

已经按照这个方式解决,后续会推到文档里。

zby-fendou commented 3 weeks ago

感谢您,非常感谢

---- 回复的原邮件 ---- | 发件人 | @.> | | 发送日期 | 2024年09月02日 12:59 | | 收件人 | YunaiV/ruoyi-vue-pro @.> | | 抄送人 | zby-fendou @.>, Author @.> | | 主题 | Re: [YunaiV/ruoyi-vue-pro] 有大佬实现了不带redis的版本了吗 (Issue #645) |

Closed #645 as completed.

— Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you authored the thread.Message ID: @.***>

YunaiV commented 3 weeks ago

客气。本来是 2.2.0 会做的

实在是大家想让我们做的东西太多了,一直没精力搞哈。