Spring-RedisSentine整合学习笔记

  1. 添加项目依赖
    <dependency>
        <groupId>org.springframework.data</groupId>
        <artifactId>spring-data-redis</artifactId>
    </dependency>
    <dependency>
        <groupId>redis.clients</groupId>
        <artifactId>jedis</artifactId>
    </dependency>
    
  2. 添加redis集群配置(application.properties)
    jedis.poolConfig.maxIdle=10
    jedis.poolConfig.maxTotal=20
    jedis.poolConfig.testOnBorrow=false
    jedis.sentinelNodes[0].host=10.221.xxx.xx
    jedis.sentinelNodes[0].port=6379
    jedis.sentinelNodes[1].host=10.221.xxx.xx
    jedis.sentinelNodes[1].port=6379
    jedis.sentinelNodes[2].host=10.221.xxx.xx
    jedis.sentinelNodes[2].port=6379
    jedis.master.name=mymaster
    jedis.password=5OQ==
    
  3. 读取配置文件实体类
    @Data
    @ConfigurationProperties(prefix = "jedis")
    public class RedisProperties {
        private PoolConfig poolConfig ;
        private Master master ;
        private String password ;
        private List<SentinelNode> sentinelNodes = new ArrayList<>();
        private String userName ;
    }
    @Data
    public class Master {
       private String name;
    } 
    @Data
    public class PoolConfig {
        private Integer maxIdle;
        private Integer maxTotal;
        private Boolean testOnBorrow;
    }
    @Data
    public class SentinelNode {
        private String host;
        private Integer port;
    }
    
  4. 主配置类编写
    @Configuration
    @EnableConfigurationProperties(RedisProperties.class)
    public class MyConfig {
        @Autowired
        private RedisProperties redisProperties ;
        @Bean
        public JedisPoolConfig jedisPoolConfig(){
            JedisPoolConfig config = new JedisPoolConfig();
            config.setMaxIdle(redisProperties.getPoolConfig().getMaxIdle());
            config.setMaxTotal(redisProperties.getPoolConfig().getMaxTotal());
            config.setTestOnBorrow(redisProperties.getPoolConfig().getTestOnBorrow());
            return config;
        }
        @Bean
        public RedisSentinelConfiguration sentinelConfig(){
            RedisSentinelConfiguration configuration = new RedisSentinelConfiguration();
            //配置matser的名称
            configuration.master(redisProperties.getMaster().getName()) ;
            // redis 密码解密
            String decodePwd = CommonUtil.decode(redisProperties.getPassword());
            configuration.setPassword(decodePwd);
            //配置redis的哨兵sentinel
            Set<RedisNode> redisNodeSet = new HashSet<>();
            redisProperties.getSentinelNodes().forEach(item->{
                redisNodeSet.add(new RedisNode(item.getHost(), item.getPort())) ;
            });
            configuration.setSentinels(redisNodeSet);
            return configuration ;
        }
        @Bean
        public JedisConnectionFactory connectionFactory(
                JedisPoolConfig jedisPoolConfig,RedisSentinelConfiguration sentinelConfig){
            return new JedisConnectionFactory(sentinelConfig,jedisPoolConfig) ;
        }
        @Bean
        public RedisTemplate redisTemplate(JedisConnectionFactory connectionFactory){
            RedisTemplate template = new RedisTemplate() ;
            template.setConnectionFactory(connectionFactory);
            template.setKeySerializer(new StringRedisSerializer());
            template.setValueSerializer(new JdkSerializationRedisSerializer());
            return template ;
        }
    }
    
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值