单体版本去掉Redis依赖

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

  • 有大佬实现了不带 Redis 的版本了吗?
  • 某个环境没有 Redis,所以需要把 Redis 给禁用掉?

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

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

1. 如何启动?

① 在 pigx-boot 模块的 pom.xml 文件中,添加 redis-mock 依赖:

<dependency>
    <groupId>com.github.microwww</groupId>
    <artifactId>redis-server</artifactId>
    <version>0.3.3</version>
</dependency>

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

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

public class PigxBootApplication {

	@SneakyThrows
	public static void main(String[] args) {
		RedisServer redisServer = new RedisServer();
		redisServer.listener("127.0.0.1", 6379);
		SpringApplication.run(PigxBootApplication.class, args);
	}

}

③ 验证效果

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

2. 注意事项

功能限制说明
  • 缓存监控模块不可用:因为本质上这个 mock 不是真正的 Redis,所以依赖 Redis 特性的监控功能会失效
  • 功能限制:mock Redis 可能不支持所有 Redis 命令和特性

Q: 哪些功能会受到影响?

A: 主要是缓存监控、Redis 管理工具等