笔者在使用redis存放有序集合zset时,发现存放的集合中的value多了\xac\xed\x00\x05t\x00$的前缀,笔者往有序集合中存放的是字符串,结果如下图所示,出现非预期的前缀。
出现该问题的原因是,同一个应用包中的redis template之前为向redis存放使用java对象序列化的值,序列化方式和string的一般方式不同。
解决的办法,兼容原来的功能,重新配置一个redis template客户端实例,设定value的序列化方式为org.springframework.data.redis.serializer.StringRedisSerializer
@Bean("redisStringTemplate")
public RedisTemplate<Object, Object> redisStringTemplate(RedisConnectionFactory factory) {
RedisTemplate<Object, Object> redisTemplate = new RedisTemplate<>();
redisTemplate.setConnectionFactory(factory);
redisTemplate.setKeySerializer(new StringRedisSerializer());
redisTemplate.setValueSerializer(new StringRedisSerializer());
return redisTemplate;
}
在需要使用的地方根据bean的名称进行引用
/**
* 注入的redisTemplate
*/
@Resource(name = "redisStringTemplate")
private RedisTemplate<String, String> redisTemplate;
问题得以解决。第一个截图中的zset的后两个值便是修改完成后的效果。