背景
公司项目采用的微服务架构,在项目使用过程中,部分信息需要在多个服务件共享,即在主服务中查询数据库数据,使用RedisTemplate设置到reids中,然后在其他服务中使用。
问题
主服务设置redis数据成功,通过redis客户端也可以查看,在主服务中也可以获取,但是在其他服务中获取不到。经过排查,发现是redis的key值序列化方式不一致所导致。
解决方法
统一key,value的序列化方式,比如,key 使用 String 序列化,value 使用 json 序列化。配置如下:
@Configuration public class RedisConfig { @Bean public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory) { RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>(); redisTemplate.setConnectionFactory(redisConnectionFactory); redisTemplate.setKeySerializer(new StringRedisSerializer()); redisTemplate.setValueSerializer(new GenericJackson2JsonRedisSerializer()); return redisTemplate; } }