SpringBoot之RedisTemplate操作redis出现\xAC\xED\x00\x05t\x00\x08乱码问题

在SpringBoot中使用RedisTemplate操作redis时,会出现\xAC\xED\x00\x05t\x00\x08这种乱码问题,特别是在使用中文时。原因是因为RedisTemplate中key和value的序列化方式都默认使用了jdk的序列化方式,想要解决乱码问题我们只需要将key和value的序列化方式分别修改为字符串和json的形式即可。

我们增加一个RedisConfig类,用来对RedisTemplate的序列化方式进行修改:

折叠复制代码
  1. @Configuration
  2. public class RedisConfig {
  3. @Bean
  4. public RedisTemplate<Object, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory) {
  5. RedisTemplate<Object, Object> redisTemplate = new RedisTemplate<>();
  6. redisTemplate.setConnectionFactory(redisConnectionFactory);
  7. // 设置key的序列化规则和value的序列化规则
  8. redisTemplate.setKeySerializer(new StringRedisSerializer());
  9. redisTemplate.setValueSerializer(new GenericJackson2JsonRedisSerializer());
  10. redisTemplate.afterPropertiesSet();
  11. return redisTemplate;
  12. }
  13. }

问题解决,可以写几个单元测试方法测试一下。

代码:https://gitee.com/lqccan/blog-demo/tree/master/SpringBoot/redis-serializer
单元测试:DemoApplicationTest

相关链接:
SpringBoot之redis缓存的基本配置及使用
SpringBoot之@Cacheable注解改造实现自定义缓存过期时间配置


觉得内容还不错?打赏个钢镚鼓励鼓励!!👍