背景
公司有两个独立的服务使用同一个redis ,项目提测后发现A服务放入Redis 缓存中的数据,B服务一直取不到。连接Redis可视化工具后,在一堆乱码的Key中找到了A服务的Key。(当时我都要哭了,从中午一直找到了晚上7点TAT)。找到Key后,对比两个服务的reids序列化代码,发现A服务Key序列化方式用的是defaultSerializer,B服务Key序列化方式是StringRedisSerializer。
解决方案
1
@Autowired
private RedisConnectionFactory factory;
@Bean("keyStringRedisTemplate")
@Primary
public RedisTemplate<String, Object> redisTemplate() {
RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>();
redisTemplate.setKeySerializer(new StringRedisSerializer());
redisTemplate.setValueSerializer( new JdkSerializationRedisSerializer());
redisTemplate.setConnectionFactory(factory);
return redisTemplate;
}