[转帖]SpringBoot之RedisTemplate操作redis出现\xAC\xED\x00\x05t\x00\x08乱码问题
springboot,redistemplate,操作,redis,出现,xac,xed,x00,x05t,x08,乱码,问题
·
浏览次数 : 0
小编点评
**问题原因:**
在Spring Boot中使用 `RedisTemplate` 操作 Redis 时,由于默认的序列化方式为 Jdk序列化,会导致 key 和 value 的序列化顺序错误导致乱码问题。
**解决方案:**
1. **指定 key 和 value 的序列化方式**:
- 将 `RedisTemplate` 的 `setKeySerializer()` 和 `setValueSerializer()` 设置为字符串序列化器 `StringRedisSerializer` 和 JSON序列化器 `GenericJackson2JsonRedisSerializer`。
**修改代码:**
```java
@Bean
public RedisTemplate
正文
在SpringBoot中使用RedisTemplate操作redis时,会出现\xAC\xED\x00\x05t\x00\x08这种乱码问题,特别是在使用中文时。原因是因为RedisTemplate中key和value的序列化方式都默认使用了jdk的序列化方式,想要解决乱码问题我们只需要将key和value的序列化方式分别修改为字符串和json的形式即可。
我们增加一个RedisConfig类,用来对RedisTemplate的序列化方式进行修改:
复制代码
@Configuration
public class RedisConfig {
@Bean
public RedisTemplate<Object, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory) {
RedisTemplate<Object, Object> redisTemplate = new RedisTemplate<>();
redisTemplate.setConnectionFactory(redisConnectionFactory);
// 设置key的序列化规则和value的序列化规则
redisTemplate.setKeySerializer(new StringRedisSerializer());
redisTemplate.setValueSerializer(new GenericJackson2JsonRedisSerializer());
redisTemplate.afterPropertiesSet();
return redisTemplate;
}
}
问题解决,可以写几个单元测试方法测试一下。
代码:https://gitee.com/lqccan/blog-demo/tree/master/SpringBoot/redis-serializer
单元测试:DemoApplicationTest
与[转帖]SpringBoot之RedisTemplate操作redis出现\xAC\xED\x00\x05t\x00\x08乱码问题相似的内容: