redis key/value 出现\xAC\xED\x00\x05t\x00\x05
2020-01-15 10:42
2683 查看
1.问题现象:
最近使用spring-data-redis 和jedis 操作redis时发现存储在redis中的key不是程序中设置的string值,前面还多出了许多类似\xac\xed\x00\x05t\x00这种字符串
2.原因:
spring-data-redis的RedisTemplate<K, V>模板类在操作redis时默认使用JdkSerializationRedisSerializer来进行序列化。
public void afterPropertiesSet() { super.afterPropertiesSet(); boolean defaultUsed = false; if (defaultSerializer == null) { defaultSerializer = new JdkSerializationRedisSerializer( classLoader != null ? classLoader : this.getClass().getClassLoader()); } if (enableDefaultSerializer) { if (keySerializer == null) { keySerializer = defaultSerializer; defaultUsed = true; } if (valueSerializer == null) { valueSerializer = defaultSerializer; defaultUsed = true; } if (hashKeySerializer == null) { hashKeySerializer = defaultSerializer; defaultUsed = true; } if (hashValueSerializer == null) { hashValueSerializer = defaultSerializer; defaultUsed = true; } } if (enableDefaultSerializer && defaultUsed) { Assert.notNull(defaultSerializer, "default serializer null and not all serializers initialized"); } if (scriptExecutor == null) { this.scriptExecutor = new DefaultScriptExecutor<K>(this); } initialized = true; }
3.解决方案
public class RedisDao { private static final Logger log = LoggerFactory.getLogger(RedisDao.class); private RedisTemplate redisTemplate; private RedisTemplate<String, Object> redisTemplateMap; @Autowired(required = false) public void setRedisTemplate(RedisTemplate redisTemplate) { RedisSerializer stringSerializer = new StringRedisSerializer(); redisTemplate.setKeySerializer(stringSerializer); redisTemplate.setValueSerializer(stringSerializer); redisTemplate.setHashKeySerializer(stringSerializer); redisTemplate.setHashValueSerializer(stringSerializer); this.redisTemplate = redisTemplate; }
将redisTemplate默认改为stringRedis序列化方式。
转载于:https://www.cnblogs.com/jiangds/p/9037553.html
- 点赞
- 收藏
- 分享
- 文章举报
相关文章推荐
- SpringBoot操作Redis时key值出现\xac\xed\x00\x05t\x00\tb,value也是同样的乱码
- 使用RedisTemplate键出现乱码(Can not load key value.Key was removed or redis-server went away.)
- key-value 内存数据库 : memcached vs redis
- Spring Data操作Redis时,发现key值出现 \xac\xed\x00\x05t\x00\tb
- flask-session session_id 和key与value的在redis的保存方式
- Java开发中 Redis设置Key/value的规则定义和注意事项
- 【数据库开发】Redis key-value内存数据库介绍
- springBoot集成redis的key,value序列化的相关问题
- Redis 一个key-value存储系统 简介
- Redis实践(三)基于jedis开发java应用:redis的8种方式设置key,value
- Redis与其他数据库key-value存储有什么不同?
- Redis快速入门:Key-Value存储系统简介
- redis 批量删除key,与出现的问题解决(MISCONF Redis is configured to save RDB snapshots)
- Redis报错:ERR Operation against a key holding the wrong kind of value 解决处理
- Key/Value数据库redis
- 统计字符串中每个字符的出现频率,返回一个 Object,key 为统计字符,value 为出现频率
- redis 对于 key-value 的常用命令
- git 出现The current branch is not configured for pull No value for key branch.master.merge found in configuration错误的解决办法
- Redis:高性能文件缓存key-value储存
- Redis快速入门:Key-Value存储系统简介