Spring Boot 集成 Redis 的方式主要有以下几种:
-
使用 Spring Boot Starter Redis,Spring Boot 提供了一个开箱即用的 Redis Starter,只需要在 pom.xml 中添加 Redis Starter 的依赖即可。
-
使用 Jedis 客户端,Jedis 是一个流行的 Java Redis 客户端,可以通过 Maven 导入 Jedis 依赖,然后使用 Jedis 提供的 API 连接 Redis 数据库。
-
使用 Lettuce 客户端,Lettuce 是一个高级的 Java Redis 客户端,支持异步和响应式 API,也可以通过 Maven 导入 Lettuce 依赖,然后使用 Lettuce 提供的 API 连接 Redis 数据库。
-
使用 Redisson,Redisson 是一个基于 Redis 的分布式 Java 对象存储和缓存库,提供了丰富的分布式数据结构和服务,包括分布式锁、信号量、BitSet、Topic、Queue、Map 等等。可以通过 Maven 导入 Redisson 依赖,然后使用 Redisson 提供的 API 连接 Redis 数据库。
在我们的框架中,选择Redisson作为Redis客户端,主要原因如下:
-
高性能:Redisson采用了Netty框架,实现了高效的网络通信,同时使用Jedis等传统客户端的优点,使Redisson具有高性能的特点。
-
分布式:Redisson提供了大量的分布式功能,如分布式锁、分布式集合、分布式对象等。基于Redis实现的分布式功能,可以满足各种业务场景需求。
-
易用性:Redisson提供了简单易用的API,对开发者友好,开发人员可以快速的上手使用。
-
高可靠性:Redisson的多种特性都是为了实现高可靠性,例如主从复制、哨兵模式以及集群模式等。
-
扩展性:Redisson提供了可扩展的功能,如Redisson提供的Redisson Spring Cache和Redisson Spring Data是基于Spring Framework的扩展包,可以方便的与Spring集成。
这章我们来介绍在系统中引入redisson-spring-boot-starter依赖来实现redis缓存管理
1、在GitEgg-Platform中新建gitegg-platform-redis用于管理工程中用到的Redis公共及通用方法。
<!-- redisson Redis客户端-->
<dependency>
<groupId>org.redisson</groupId>
<artifactId>redisson-spring-boot-starter</artifactId>
</dependency>
2、在gitegg-platform-bom的pom.xml文件中添加gitegg-platform-redis
<!-- gitegg cache自定义扩展 -->
<dependency>
<groupId>com.gitegg.platform</groupId>
<artifactId>gitegg-platform-redis</artifactId>
<version>${gitegg.project.version}</version>
</dependency>
3、GitEgg-Platform重新install,在GitEgg-Cloud子工程gitegg-service-system代码SystemController.java中添加设置和获取缓存的测试方法
private final RedissonClient redisson;
private final RedisTemplate<String, String> template;
@ApiOperation(value = "缓存测试设置值")
@GetMapping(value = "redis/set")
public Result redisSet(@RequestParam("id") String id) {
RMap<String, String> m = redisson.getMap("test", StringCodec.INSTANCE);
m.put("1", id);
return Result.success("设置成功");
}
@ApiOperation(value = "缓存测试获取值")
@GetMapping(value = "redis/get")
public Result redisGet() {
BoundHashOperations<String, String, String> hash = template.boundHashOps("test");
String t = hash.get("1");
return Result.success(t);
}
4、gitegg-service-system中的GitEggSystemApplication.java添加@EnableCaching注解
package com.gitegg.service.system;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cache.annotation.EnableCaching;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.context.annotation.ComponentScan;
/**
* gitegg-system 启动类
*/
@EnableDiscoveryClient
@ComponentScan(basePackages = "com.gitegg")
@MapperScan("com.gitegg.*.*.mapper")
@SpringBootApplication
@EnableCaching
public class GitEggSystemApplication {
public static void main(String[] args) {
SpringApplication.run(GitEggSystemApplication.class,args);
}
}
5、在Nacos配置文件中添加redis的相关配置,这里使用单机版redis,其他模式配置请参考官方文档
spring:
redis:
database: 1
host: 127.0.0.1
port: 6379
password: root
ssl: false
timeout: 2000
redisson:
config: |
singleServerConfig:
idleConnectionTimeout: 10000
connectTimeout: 10000
timeout: 3000
retryAttempts: 3
retryInterval: 1500
password: root
subscriptionsPerConnection: 5
clientName: null
address: "redis://127.0.0.1:6379"
subscriptionConnectionMinimumIdleSize: 1
subscriptionConnectionPoolSize: 50
connectionMinimumIdleSize: 32
connectionPoolSize: 64
database: 0
dnsMonitoringInterval: 5000
threads: 0
nettyThreads: 0
codec: !<org.redisson.codec.JsonJacksonCodec> {}
"transportMode":"NIO"
6、启动项目,使用swagger进行测试
通过以上设置的值和获取的结果可知,我们配置的缓存已生效。
本文源码在https://gitee.com/wmz1930/GitEgg 的chapter-20分支。
GitEgg-Cloud是一款基于SpringCloud整合搭建的企业级微服务应用开发框架,开源项目地址:
Gitee: https://gitee.com/wmz1930/GitEgg
GitHub: https://github.com/wmz1930/GitEgg
欢迎感兴趣的小伙伴Star支持一下。