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

xiaoxiao2021-02-28  56

在研发过程中使用  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

转载请注明原文地址: https://www.6miu.com/read-79240.html

最新回复(0)