电子商城网站设计实训报告,成都做网站设计公司价格,小程序启动失败,商业网站建站背景#xff1a;项目redis由集群改为哨兵模式#xff0c;漏洞扫描未授权访问漏洞#xff08;CNVD-2019-21763#xff09;#xff0c;要求对redis哨兵也设置密码#xff0c;redisson依赖版本为3.11.5 spring-boot版本为2.1.13。
redisson依赖升级 dependency项目redis由集群改为哨兵模式漏洞扫描未授权访问漏洞CNVD-2019-21763要求对redis哨兵也设置密码redisson依赖版本为3.11.5 spring-boot版本为2.1.13。
redisson依赖升级 dependencygroupIdorg.redisson/groupIdartifactIdredisson-spring-boot-starter/artifactIdversion3.15.6/versionexclusionsexclusiongroupIdorg.redisson/groupIdartifactIdredisson-spring-data-24/artifactId/exclusion/exclusions/dependencydependencygroupIdorg.redisson/groupIdartifactIdredisson-spring-data-21/artifactIdversion3.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.database0
spring.redis.passwordHcicloudRedis2000
spring.redis.sentinel.mastermymaster
spring.redis.sentinel.nodesip:portspring.redis.jedis.pool.max-idle200
spring.redis.jedis.pool.min-idle10
spring.redis.jedis.pool.max-active200
spring.redis.jedis.pool.max-wait10000ms
spring.redis.jedis.pool.ping-rate30000
spring.redis.jedis.pool.timeout10000
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;BeanConditionalOnMissingBeanRedissonClient redissonSentinel(){Config config new Config();String[] nodesStr nodes.split(,);ListString 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);}}