问题描述
但是添加键值对后,当我尝试使用redis-cli控制台列出/查看它们时,它没有列出任何值。
您会注意到,在控制台中,它列出了** keys ***命令的一些垃圾值(通过浏览器添加新的密钥/值之后),但是当我尝试检索密钥时,它显示了变成空的。
这可能是什么原因? 如何在控制台中正确列出值?
还附加了宁静的api方法定义:
解决方法
在KEYS *
的输出中看到的值是Java序列化的字符串user
。
前两个字节\xac\xed
(十六进制:0xACED)是STREAM_MAGIC
常量。
接下来的两个字节\x00\x05
(十六进制:0x0005)是序列化协议的STREAM_VERSION
版本。
下一个字节t
为0x74 = TC_STRING
表示字符串对象。
最后\x00\x04
是字符串的长度。
此协议在6.4.2 Terminal Symbols and Constants的对象序列化流协议中进行了描述
您可能想查看代码,以了解为什么在到达Redis之前将字符串进行Java序列化。可能是因为屏幕截图中显示了h:
。
同时,您可以执行GET "\xac\xed\x00\x05t\x00\x04user"
检查user
键的值。