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

redisson 哨兵模式配置

背景:项目redis由集群改为哨兵模式,漏洞扫描未授权访问漏洞(CNVD-2019-21763),要求对redis哨兵也设置密码,redisson依赖版本为3.11.5   spring-boot版本为2.1.13。

redisson依赖升级

        <dependency><groupId>org.redisson</groupId><artifactId>redisson-spring-boot-starter</artifactId><version>3.15.6</version><exclusions><exclusion><groupId>org.redisson</groupId><artifactId>redisson-spring-data-24</artifactId></exclusion></exclusions></dependency><dependency><groupId>org.redisson</groupId><artifactId>redisson-spring-data-21</artifactId><version>3.15.6</version></dependency>

        说明:3.11.5版本不支持设置哨兵密码,也就是SentinelPassword,需要升级redisson版本,为什么排除redisson-spring-data-24,高版本redisson会排除jedis以及lettuce,如果不排除并重新引入的话启动会报错,报错如下:java.lang.NoClassDefFoundError:org/springframework/data/redis/connection/RedisStreamCommands

2.1.X版本支持的是redisson-spring-data-21,所以排除springboot2.3的支持,引入2.1的支持。

配置:

spring.redis.database=0
spring.redis.password=HcicloudRedis2000
spring.redis.sentinel.master=mymaster
spring.redis.sentinel.nodes=ip:portspring.redis.jedis.pool.max-idle=200
spring.redis.jedis.pool.min-idle=10
spring.redis.jedis.pool.max-active=200
spring.redis.jedis.pool.max-wait=10000ms
spring.redis.jedis.pool.ping-rate=30000
spring.redis.jedis.pool.timeout=10000

config:

@Configuration
@ConfigurationProperties
@Data
public class RedissonConfig {@Value("${spring.redis.sentinel.nodes:}")private String nodes;@Value("${spring.redis.sentinel.master:}")private String master;@Value("${spring.redis.jedis.pool.timeout}")private int timeout;@Value("${spring.redis.password}")private String password;@Value("${spring.redis.database}")private int database;@Value("${spring.redis.jedis.pool.max-idle}")private int maxPool;@Value("${spring.redis.jedis.pool.min-idle}")private int minPool;@Value("${spring.redis.jedis.pool.max-active}")private int maxActive;@Value("${spring.redis.jedis.pool.ping-rate}")private int pingRate;@Bean@ConditionalOnMissingBeanRedissonClient redissonSentinel(){Config config = new Config();String[] nodesStr = nodes.split(",");List<String> nodeList = new ArrayList<>(nodesStr.length);Arrays.stream(nodesStr).forEach((index)->nodeList.add(index.startsWith("redis://")?index:"redis://"+index));SentinelServersConfig sentinelConfig = config.useSentinelServers().addSentinelAddress(nodeList.toArray(new String[0])).setCheckSentinelsList(false).setPingConnectionInterval(pingRate).setMasterName(master).setDatabase(database).setReadMode(ReadMode.SLAVE).setMasterConnectionMinimumIdleSize(minPool).setSlaveConnectionMinimumIdleSize(minPool).setMasterConnectionPoolSize(maxPool).setSlaveConnectionPoolSize(maxPool).setTimeout(timeout);if(StringUtils.isNotEmpty(password)){sentinelConfig.setPassword(password).setSentinelPassword(password); //哨兵和master的密码在配置中保持了一致,请根据项目实际情况配置}return Redisson.create(config);}}

http://www.lryc.cn/news/265677.html

相关文章:

  • 免费的ChatGPT分享
  • C语言—每日选择题—Day54
  • 先进制造身份治理现状洞察:从手动运维迈向自动化身份治理时代
  • 【密码学引论】密码协议
  • 利用快手的用户数据和精准营销提升电商平台用户转化率和销售额
  • Linux根目录下默认目录作用
  • 国产Type-C接口逻辑协议芯片:Type-C显示器芯片方案
  • uniapp如何原生app-云打包
  • 分布式编译distcc
  • Elasticsearch常见面试题
  • solidity 重入漏洞
  • 【智能家电】东胜物联离在线语音方案为厨电企业赋能,实现厨房智能化控制
  • 3DMAX英文版怎么切换到中文版?
  • WEB渗透—PHP反序列化(八)
  • LeetCode——2415. 反转二叉树的奇数层
  • 【Spring学习笔记】Spring 注解开发
  • 【华为数据之道学习笔记】6-5数据地图的核心价值
  • JavaWeb笔记之JSP
  • 在x64上构建智能家居(home assistant)(二)(新版Debain12)连接Postgresql数据库
  • 八股文打卡day6——计算机网络(6)
  • 【PHY6222】绑定详解
  • vue事件绑定
  • 如何在服务器上部署springboot项目
  • 基于Spring Boot的支教志愿者招聘网站
  • 安装gnvm,nodejs,npm使用方法
  • word导入导出-Apache POI 和 Poi-tl
  • Hadoop 集群环境搭建
  • maven完结,你真的学完了吗
  • 【Xcode】解决Unable to process request - PLA Update available
  • 力扣单调栈算法专题训练