前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Spring Boot 3中使用 Lettuce RedisTemplate 连接 Redis 集群

Spring Boot 3中使用 Lettuce RedisTemplate 连接 Redis 集群

作者头像
耕耘实录
发布2023-12-18 11:57:53
4300
发布2023-12-18 11:57:53
举报
文章被收录于专栏:耕耘实录耕耘实录
文章目录

  • 一 背景
  • 二 解决步骤
    • 2.1 将 Redis 配置注入 RedisTemplate 相关 Bean
    • 2.2 application.properties 配置
    • 2.3 使用 Bean
  • 三 总结
  • 四 参考文档

一 背景

最近在Spring Boot3 应用系统开发过程中,使用了官方的spring-boot-starter-data-redis依赖来操作Redis单节点和集群。在操作单节点时,直接使用了RedisTemplate来对节点进行操作。参考了官方案例,非常方便,几行代码实现了Redis单节点操作。在开发测试时偷了个懒,没有搭建集群。当连接地址替换为集群时,发现客户端不能直接操作集群,顿时懵了!查了官网资料,也仅有寥寥几行,网上目前还是大量使用Jedis客户端来连接操作Redis集群,Lettuce相关的资料也极为稀少。查阅 Spring 官方文档和Lettucce官方文档最终找到了解决方案!还好没放弃!

二 解决步骤

2.1 将 Redis 配置注入 RedisTemplate 相关 Bean

在配置类内增加以下内容:

代码语言:javascript
复制
    private RedisProperties redisProperties;

    @Autowired
    public void setRedisProperties(RedisProperties redisProperties) {
        this.redisProperties = redisProperties;
    }

    @Bean("lettuce_template")
    public RedisTemplate<String, String> redisTemplate() {
        RedisClusterConfiguration redisClusterConfiguration = new RedisClusterConfiguration(redisProperties.getCluster().getNodes());
        redisClusterConfiguration.setPassword(redisProperties.getPassword());
        LettuceConnectionFactory lettuceConnectionFactory = new LettuceConnectionFactory(redisClusterConfiguration);
        lettuceConnectionFactory.afterPropertiesSet();
        RedisTemplate<String, String> template = new RedisTemplate<>();
        template.setConnectionFactory(lettuceConnectionFactory);
        template.afterPropertiesSet();
        return template;
    }

lettuce_template 这个 Bean 就能成功读取配置文件中的 Redis 集群配置信息,包括节点详情和密码。

2.2 application.properties 配置

配置文件内必须确保存在以下配置,以便Bean初始化时可以正确获取。

代码语言:javascript
复制
spring.data.redis.cluster.nodes=172.31.164.149:6001,172.31.164.149:6002,172.31.164.149:6003,172.31.164.149:6004,172.31.164.149:6005,172.31.164.149:6006
spring.data.redis.password=C*x#1a2b
2.3 使用 Bean

将 lettuce_template 注入到相关组件使用,操作与单节点一致。需要注意的是,注入需使用@Qualifier("lettuce_template")指定,以避免冲突。其他使用方法参见官网文档。

三 总结

1、单节点与集群的初始化方式是不一样的,这一点需要牢记,Bean 不能直接套用,官网的 RedisTemplate 是针对单节点的; 2、Bean注入时尽量指定名称,避免冲突。

四 参考文档

1、Redis Cluster 2、Working with Objects through RedisTemplate 3、Lettuce reference documentation

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2023-12-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 文章目录
  • 一 背景
  • 二 解决步骤
    • 2.1 将 Redis 配置注入 RedisTemplate 相关 Bean
      • 2.2 application.properties 配置
        • 2.3 使用 Bean
        • 三 总结
        • 四 参考文档
        相关产品与服务
        云数据库 Redis
        腾讯云数据库 Redis(TencentDB for Redis)是腾讯云打造的兼容 Redis 协议的缓存和存储服务。丰富的数据结构能帮助您完成不同类型的业务场景开发。支持主从热备,提供自动容灾切换、数据备份、故障迁移、实例监控、在线扩容、数据回档等全套的数据库服务。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档