分布式锁 哨兵模式_SpringBoot整合Redis哨兵模式

SpringBoot整合Redis哨兵模式

主从搭建 点击

哨兵搭建 点击

配置

yaml

# redis 主从哨兵配置

spring:

redis:

database: 0

host: 127.0.0.1

port: 6379

password:

pool:

max-active: 8

max-wait: -1 # 连接池最大阻塞等待时间(使用负值表示没有限制)

max-idle: 8

min-idle: 0

timeout: 0

# 主节点哨兵名

sentinel:

master: mymaster

# comma-separated list of host:port pairs 哨兵节点配置列表

nodes: 127.0.0.1:26380,127.0.0.1:26381

依赖

org.springframework.boot

spring-boot-starter-redis

1.4.7.RELEASE

连接池

@Configuration

@EnableAutoConfiguration

public class RedisCacheConfig extends CachingConfigurerSupport {

@Value("${spring.redis.host}")

private String host;

@Value("${spring.redis.port}")

private int port;

@Value("${spring.redis.timeout}")

private int timeout = 0;

@Value("${spring.redis.database}")

private int database;

@Value("${spring.redis.password}")

private String password;

@Value("${spring.redis.sentinel.nodes}")

private String redisNodes;

@Value("${spring.redis.sentinel.master}")

private String master;

/**

* redis哨兵配置

*/

@Bean

public RedisSentinelConfiguration redisSentinelConfiguration(){

RedisSentinelConfiguration configuration = new RedisSentinelConfiguration();

String[] host = redisNodes.split(",");

for(String redisHost : host){

String[] item = redisHost.split(":");

String ip = item[0];

String port = item[1];

configuration.addSentinel(new RedisNode(ip, Integer.parseInt(port)));

}

configuration.setMaster(master);

return configuration;

}

/**

* 连接redis的工厂类

*/

@Bean

public JedisConnectionFactory jedisConnectionFactory() {

JedisConnectionFactory factory = new JedisConnectionFactory(redisSentinelConfiguration());

factory.setHostName(host);

factory.setPort(port);

factory.setTimeout(timeout);

factory.setPassword(password);

factory.setDatabase(database);

return factory;

}

/**

* 配置RedisTemplate 序列化器

*/

@Bean

public RedisTemplate redisTemplate() {

//StringRedisTemplate的构造方法中默认设置了stringSerializer

RedisTemplate template = new RedisTemplate<>();

//设置开启事务

template.setEnableTransactionSupport(true);

//set key serializer

StringRedisSerializer stringRedisSerializer = new StringRedisSerializer();

template.setKeySerializer(stringRedisSerializer);

template.setHashKeySerializer(stringRedisSerializer);

template.setConnectionFactory(jedisConnectionFactory());

template.afterPropertiesSet();

return template;

}

/**

* 设置RedisCacheManager

* 使用cache注解管理redis缓存

*

* @return

*/

@Override

@Bean

public RedisCacheManager cacheManager() {

RedisCacheManager redisCacheManager = new RedisCacheManager(redisTemplate());

return redisCacheManager;

}

/**

* 自定义生成redis-key

*

* @return

*/

@Override

public KeyGenerator keyGenerator() {

return new KeyGenerator() {

@Override

public Object generate(Object o, Method method, Object... objects) {

StringBuilder sb = new StringBuilder();

sb.append(o.getClass().getName()).append(".");

sb.append(method.getName()).append(".");

for (Object obj : objects) {

sb.append(obj.toString());

}

System.out.println("keyGenerator=" + sb.toString());

return sb.toString();

}

};

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值