Spring Data Redis无法获取持久化数据,Redis键前缀含义咨询
问题解析与解决
关于键前缀\xac\xed\x00\x05t\x00\x06的说明
这个前缀是Java序列化的二进制标记,因为Spring Data Redis的RedisTemplate默认使用JdkSerializationRedisSerializer作为键和值的序列化器:
\xac\xed\x00\x05是JDK序列化的魔数,用来标识这是JDK序列化的数据t表示后续内容是字符串类型\x00\x06是后续字符串的长度(对应"voting"的6个字符)
为什么GET命令返回nil?
你用rightPush操作的是Redis的列表(List)类型,而GET命令仅适用于查询字符串(String)类型的键值对。要查看列表内容,应该用列表专用命令:
# 使用默认序列化器时,需用完整的序列化后键 LRANGE "\xac\xed\x00\x05t\x00\x06voting" 0 -1
如何让Redis键显示为明文"voting"?
修改RedisTemplate的序列化器,改用StringRedisSerializer来序列化键(和值),这样存入Redis的键就是明文:
// 配置RedisTemplate的序列化器 redisTemplate.setKeySerializer(new StringRedisSerializer()); // 如果希望值也以明文存储,同样设置值序列化器 redisTemplate.setValueSerializer(new StringRedisSerializer()); redisTemplate.afterPropertiesSet();
配置后再执行rightPush,Redis里的键就会是"voting",此时可以用LRANGE voting 0 -1直接查看列表内容。
内容的提问来源于stack exchange,提问作者user3465651
相关产品推荐
相关产品推荐

