SpringBoot连接Redis集群方法及测试

上一篇博文讲解了Redis集群的搭建过程,上上某篇讲解了SpringBoot连接Reids去缓存数据的过程,这一篇简单介绍一下SpringBoot怎么连接Redis集群缓存数据,实现高可用。
连接简直超简单,直接application.properties配置文件中配置如下内容,主要是配置spring.redis.cluster.nodes的值为集群各个节点的值
spring.redis.pool.max-active=40
spring.redis.pool.max-idle=8
spring.redis.pool.min-idle=2
spring.redis.pool.max-wait=5000
spring.redis.timeout=5000
spring.redis.cluster.nodes=192.168.217.111:6371,192.168.217.112:6372,192.168.217.113:6373,192.168.217.111:6374,192.168.217.112:6375,192.168.217.113:6376
然后我上篇文档中使用RedisTemplate去调用,还是这么去调用,测试如下:
第一次调用,从数据库获取数据,并且缓存到redis集群中,如下图:
SpringBoot连接Redis集群方法及测试

再次刷新,redis中有数据了,因此不从数据库中获取了,直接从缓存拿出如下图:
SpringBoot连接Redis集群方法及测试

这里强调一下代码中用RedisTemplate去set值,就可以通过RedisTemplate的get去把值取出来,但是如果登到后台的redis-cli里面去,并不能用get key的方法获取到值,为什么?
因为序列化的方式变了,key值有变化,用keys可以看到原先的key前面拼接了一串内容,这样操作不够直接,为什么会有这种现象呢?因为和他的序列化有关系,RedisTemplate通过代码连接的时候,默认的序列化方式使用的是jdk的序列化方式,和redis本身的序列化方式不一样,所以会导致该现象,不能说没问题,只是我们后端get查看数据的时候比较麻烦,解决方法就是直接设置RedisTemplate的序列化方式,也就是新增Config配置项配置采用哪种方式,如下:
@Configuration
public class RedisConfig {
@Bean
public RedisTemplate , Object> redisTemplate(RedisConnectionFactory connectionFactory) {
RedisTemplate , Object> template = new RedisTemplate<>();
template.setConnectionFactory(connectionFactory);
// redisvalue值使用Jackson2JsonRedisSerializer来序列化和反序列化
Jackson2JsonRedisSerializer serializer = new Jackson2JsonRedisSerializer(Object.class);
ObjectMapper mapper = new ObjectMapper();
mapper.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
mapper.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
serializer.setObjectMapper(mapper);
template.setValueSerializer(serializer);
// rediskey值使用StringRedisSerializer来序列化和反序列化
template.setKeySerializer(new StringRedisSerializer());
template.afterPropertiesSet();
return template;
}
}

这样配置之后,我们再次测试,第一次访问如下:
SpringBoot连接Redis集群方法及测试

后端用redis客户端查看keys, 发现keys前面再也不加其他东西了,如图:
SpringBoot连接Redis集群方法及测试

再次访问页面,数据从Redis集群中获取到:
SpringBoot连接Redis集群方法及测试

此时,让第三个Redis服务器下电(意味着同时有俩个服务器故障),但是页面依旧可以从redis中正确的获取数据,也就是实现了高可用。
完!!!




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值