当前位置: 首页 > news >正文

springboot混用RedisTemplate(lettuce、jedis)和Redisson客户端

手打不易,如果转摘,请注明出处!

注明原文:https://zhangxiaofan.blog.csdn.net/article/details/136679352

redis常用的三大客户端:lettuce、jedis、redisson

一般都是 lettuce + redisson(推荐) 或者 jedis + redisson 混用

RedisTemplate和Redisson的Bean定义

假设项目使用到的RedisTemplate和Redisson如下:

RedisTemplate

/*** Redis配置信息*/
@Configuration
@AutoConfigureAfter(RedisAutoConfiguration.class)
public class RedisTemplateConfig {@Bean("redisTemplate")public RedisTemplate<String, String> redisTemplate(RedisConnectionFactory factory) {RedisTemplate<String, String> template = new RedisTemplate<>();...template.afterPropertiesSet();return template;}
}

Redisson

Redisson客户端Bean如下


/*** Redisson 配置属性类*/
@Configuration
public class RedissonConfig {/*** 集群配置*/@Value("${redis.redisson.cluster.nodes:}")private String clusters;/*** host*/@Value("${redis.redisson.host:}")private String redisHost;/*** 端口*/@Value("${redis.redisson.port:}")private String redisPort;/*** RedissonClient redisson*/@Bean(destroyMethod = "shutdown")public RedissonClient redisson() {Config config = new Config();...return Redisson.create(config);}
}

方式1:RedisTemplate(Lettuce)+Redisson 客户端

注意,Redisson 没有用 redisson-spring-boot-starter,用自定义的配置类装配bean。

pom.xml 内容如下:

        <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId><version>2.7.18</version></dependency><dependency><groupId>org.redisson</groupId><artifactId>redisson</artifactId><version>3.24.3</version></dependency>

不需要再添加其他依赖。

application.properties 配置如下: 

spring.redis.database = 0
spring.redis.cluster.nodes = xxxx
spring.redis.password= xx
spring.redis.cluster.max-redirects = 3
spring.redis.timeout = 1000
spring.redis.lettuce.pool.min-idle = 0
spring.redis.lettuce.pool.max-idle = 8
spring.redis.lettuce.pool.max-active = 8
spring.redis.lettuce.pool.max-wait = 10000redis.redisson.database = 0
redis.redisson.cluster.nodes = xxxx
redis.redisson.password = xxx
redis.redisson.port = 6379

注意:spring-boot-starter-data-redis 自带 spring-data-redis,默认使用的 lettuce 客户端

 这样项目中实现了  lettuce(redisTemplate) + redisson 客户端混用

 方式2:RedisTemplate(Jedis)+Redisson 客户端

注意,Redisson 没有用 redisson-spring-boot-starter,用自定义的配置类装配bean。

由于 spring-data-redis 默认是使用 lettuce 客户端,如果要用 Jedis 必须排除 lettuce:

        <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId><exclusions><exclusion><groupId>io.lettuce</groupId><artifactId>lettuce-core</artifactId></exclusion></exclusions></dependency>

 完整的 pom.xml 文件如下:

        <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId><version>2.7.18</version><exclusions><exclusion><groupId>io.lettuce</groupId><artifactId>lettuce-core</artifactId></exclusion></exclusions></dependency><dependency><groupId>org.redisson</groupId><artifactId>redisson</artifactId><version>3.24.3</version></dependency>

 application.properties 配置如下: 

spring.redis.database = 0
spring.redis.cluster.nodes = xxxx
spring.redis.password= xx
spring.redis.cluster.max-redirects = 3
spring.redis.timeout = 1000
spring.redis.jedis.pool.min-idle = 0
spring.redis.jedis.pool.max-idle = 8
spring.redis.jedis.pool.max-active = 8
spring.redis.jedis.pool.max-wait = 10000redis.redisson.database = 0
redis.redisson.cluster.nodes = xxxx
redis.redisson.password = xxx
redis.redisson.port = 6379

 方式3:RedisTemplate(Redisson )+Redisson 客户端

这种方式就是只使用Redisson客户端。

根据自己项目的版本,修改相关的pom.xml内容:

        <dependency><groupId>org.redisson</groupId><artifactId>redisson-spring-boot-starter</artifactId><version>${redisson-spring-boot-starter.version}</version><exclusions><exclusion><artifactId>redisson-spring-data-31</artifactId><groupId>org.redisson</groupId></exclusion></exclusions><version>3.24.3</version></dependency><dependency><groupId>org.redisson</groupId><artifactId>redisson-spring-data-27</artifactId><version>3.24.3</version></dependency><dependency><groupId>org.springframework.data</groupId><artifactId>spring-data-redis</artifactId><version>2.6.3</version></dependency>

注意地方:

需要引入 redisson-spring-boot-starter, 并且根据spring-boot的版本,确定是否要排除 redisson-spring-data-xx,引入正确的版本。否则会报错:Could not initialize class org.redisson.spring.data.connection.RedissonClusterConnection。

原因可以查看文章:

https://zhangxiaofan.blog.csdn.net/article/details/136632372

redisson-spring-data
module name
Spring Boot
version
redisson-spring-data-161.3.y
redisson-spring-data-171.4.y
redisson-spring-data-181.5.y
redisson-spring-data-2x2.x.y
redisson-spring-data-3x3.x.y

此时我们只需要写 redisson 的配置即可:

redis.redisson.database = 0
redis.redisson.cluster.nodes = xxxx
redis.redisson.password = xxx
redis.redisson.port = 6379
...

相关文章:

  • 2024年目标检测研究进展
  • 这个班要不还是别上了吧。
  • AP AUTOSAR 执行管理与状态管理的交互
  • 观测云在 .NET 业务中分析性能问题的最佳实践
  • 基于YOLOv8深度学习的木薯病害智能诊断与防治系统【python源码+Pyqt5界面+数据集+训练代码】深度学习实战
  • elasticsearch常见问题:xpack.security.transport.ssl、unknown setting [node.master]
  • 产品测试方案:视频接入平台并发性能测试方案和报告(即150路视频并发流媒体服务器模块的性能测试方案和报告)
  • upload 上传文件后在下次弹框打开时清空上次上传的内容
  • app分发的整个流程、相关要求以及需要注意的事项
  • k8s中的PV和PVC存储介绍
  • MySQL的索引(优缺点,二叉树,红黑数,B+Tree)【详解】
  • 数据库设计三范式
  • Go语言与Rust哪一个更有发展前景?
  • 高吞吐SFTP连接池设计方案
  • Rust 构建开源 Pingora 框架可以与nginx媲美
  • Akka系列(七):Actor持久化之Akka persistence
  • CSS实用技巧
  • JS题目及答案整理
  • leetcode46 Permutation 排列组合
  • Making An Indicator With Pure CSS
  • Material Design
  • Promise面试题,控制异步流程
  • Protobuf3语言指南
  • React-redux的原理以及使用
  • Swoft 源码剖析 - 代码自动更新机制
  • 阿里中间件开源组件:Sentinel 0.2.0正式发布
  • 笨办法学C 练习34:动态数组
  • 第三十一到第三十三天:我是精明的小卖家(一)
  • - 概述 - 《设计模式(极简c++版)》
  • 聚簇索引和非聚簇索引
  • 日剧·日综资源集合(建议收藏)
  • 小程序上传图片到七牛云(支持多张上传,预览,删除)
  • 新书推荐|Windows黑客编程技术详解
  • ​ubuntu下安装kvm虚拟机
  • ​软考-高级-信息系统项目管理师教程 第四版【第23章-组织通用管理-思维导图】​
  • #Linux(Source Insight安装及工程建立)
  • (3)Dubbo启动时qos-server can not bind localhost22222错误解决
  • (3)选择元素——(14)接触DOM元素(Accessing DOM elements)
  • (分类)KNN算法- 参数调优
  • (附源码)ssm高校实验室 毕业设计 800008
  • (附源码)流浪动物保护平台的设计与实现 毕业设计 161154
  • (黑马C++)L06 重载与继承
  • (论文阅读26/100)Weakly-supervised learning with convolutional neural networks
  • (全部习题答案)研究生英语读写教程基础级教师用书PDF|| 研究生英语读写教程提高级教师用书PDF
  • (一)python发送HTTP 请求的两种方式(get和post )
  • (转)PlayerPrefs在Windows下存到哪里去了?
  • (转)淘淘商城系列——使用Spring来管理Redis单机版和集群版
  • (转载)利用webkit抓取动态网页和链接
  • .360、.halo勒索病毒的最新威胁:如何恢复您的数据?
  • .Net FrameWork总结
  • .net Stream篇(六)
  • .NET 中选择合适的文件打开模式(CreateNew, Create, Open, OpenOrCreate, Truncate, Append)
  • .NET大文件上传知识整理
  • .NET使用HttpClient以multipart/form-data形式post上传文件及其相关参数
  • .NET使用存储过程实现对数据库的增删改查