SpringBoot集成Redis解决乱码问题 - \xAC\xED\x00\x05t\x00
SpringBoot集成Redis解决乱码问题
问题概述
使用redisTemplate.opsForValue().setset(K key, V value, long timeout, TimeUnit unit)
方法存入Redis数据时,产生乱码如下图。
产生原因
这是因为Reids默认把存入key和value的值序列化成byte[]
格式。
解决方式
在SpringBoot扫描路径下新建配置类RedisTemplateBeanPostProcessor
实现BeanPostProcessor
接口
package pany.config;import org.springframework.beans.BeansException;import org.springframework.beans.factory.config.BeanPostProcessor;import org.springframework.context.annotation.Configuration;import org.springframework.data.redis.core.RedisTemplate;import org.springframework.data.redis.serializer.StringRedisSerializer;@Configurationpublic class RedisTemplateBeanPostProcessor implements BeanPostProcessor {@Overridepublic Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {if(RedisTemplate.class.isAssignableFrom(bean.getClass())) {RedisTemplate redisTemplate = (RedisTemplate)bean;StringRedisSerializer stringRedisSerializer = new StringRedisSerializer();redisTemplate.setKeySerializer(stringRedisSerializer);redisTemplate.setValueSerializer(stringRedisSerializer);}return bean;}}