背景:
在SpringBoot中使用Redis时,发现key\value前面都有一串\xac\xed\x00\x05sr\x00...的字符。
使用前:

使用后:

解决方案一:
使用StringRedisSerializer、FastJsonRedisSerializer替换默认的JdkSerializationRedisSerializer
package xxx.config.redis;
import com.alibaba.fastjson.support.spring.FastJsonRedisSerializer;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.serializer.RedisSerializer;
import org.springframework.data.redis.serializer.StringRedisSerializer;
@Configuration
public class RedisExtConfiguration {
@Bean
public RedisTemplate<Object, Object> redisTemplate(RedisConnectionFactory factory) {
// 定义序列化方式
RedisSerializer<String> strRedisSerializer = new StringRedisSerializer();
FastJsonRedisSerializer objRedisSerializer = new FastJsonRedisSerializer(Object.class);
RedisTemplate<Object, Object> redisTemplate = new RedisTemplate<>();
redisTemplate.setConnectionFactory(factory);
// 配置key序列化方式
redisTemplate.setKeySerializer(strRedisSerializer);
redisTemplate.setHashKeySerializer(strRedisSerializer);
// 配置value序列化方式
redisTemplate.setValueSerializer(objRedisSerializer);
redisTemplate.setHashValueSerializer(objRedisSerializer);
return redisTemplate;
}
}
在SpringBoot集成Redis时遇到键值存储时带有xacxedx00x05srx00等前缀的问题,这是由于默认的JdkSerializationRedisSerializer序列化方式导致的。为了解决这个问题,可以将序列化器替换为StringRedisSerializer和FastJsonRedisSerializer,分别用于key和value的序列化,从而去除不必要的前缀。
1761

被折叠的 条评论
为什么被折叠?



