Springboot中使用redis,配置redis的key value生成策略(解决编码问题)

2022-08-19 10:26:15


在研发过程中使用RedisTemplate类进行创建 key-value记录时,redis存储的是乱码形式,但是并不影响 读取值,只是数据库记录的可读性几乎为零了。


这是默认的key生成策略,是通过序列化Serializable后生成的key,当读取缓存时系统再通过反序列化得到key对象。

如果我们想修改序列化方式,来生成一个可读的key和value,下面是方法。

譬如如果key我想用字符串如 mobile,value为map,主要代码如下:


import org.springframework.data.redis.core.RedisTemplate
import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer;
import org.springframework.data.redis.serializer.RedisSerializer;
import org.springframework.data.redis.serializer.StringRedisSerializer;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.annotation.PropertyAccessor
import com.fasterxml.jackson.annotation.JsonAutoDetect



@Resource
RedisTemplate redisTemplate

RedisSerializer<String> redisSerializer = new StringRedisSerializer();//Long类型不可以会出现异常信息;
redisTemplate.setKeySerializer(redisSerializer);
Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class);
ObjectMapper om = new ObjectMapper();
om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
jackson2JsonRedisSerializer.setObjectMapper(om);

redisTemplate.setValueSerializer(jackson2JsonRedisSerializer);
redisTemplate.setHashValueSerializer(jackson2JsonRedisSerializer);
redisTemplate.afterPropertiesSet();
// 以上设置 redisTemplate对象的 属性,设置好后既 就可以存储具有可读性的数据了

redisTemplate.boundHashOps("mobile").putAll(["yyy":56,pp:98])

redisTemplate.boundHashOps("mobile").get("yyy")


参考:http://blog.csdn.net/tianyaleixiaowu/article/details/70595073




  • 作者:chenyulancn
  • 原文链接:https://blog.csdn.net/chenyulancn/article/details/72915658
    更新时间:2022-08-19 10:26:15