【发布时间】:2015-12-18 01:27:18
【问题描述】:
我在redis中放了一个key-value,其中key是UUID转换成字节数组,用于空间优化。
"3DEBB752-654A-4206-89BA-D3517237312E" -> [-119, -70, -45, 81, 114, 55, 49, 46, 61, -21, -73, 82, 101, 74, 66, 6].
我正在使用 Spring Jedis 从 Redis 服务器获取数据,当我尝试通过 KEYS 函数获取密钥时
jedisConnection.keys("*".getBytes());
我明白了
[-119, -70, -45, 81, 114, 55, 49, 46, 61, -21, -73, 82, 101, 74, 66, 6]
但是,当我尝试通过 SCAN 功能获取密钥时
jedisConnection.scan(ScanOptions.NONE);
键以某种方式更改为这个
[-17, -65, -67, -17, -65, -67, -17, -65, -67, 81, 114, 55, 49, 46, 61, -17, -65, -67, 82, 101, 74, 66, 6]
我很困惑,请告诉我为什么 KEYS 和 SCAN 的键不同
【问题讨论】:
-
您是否使用 SCAN 遍历了所有键? SCAN 一次只返回几个键。
-
是的...由于测试原因,我使用空数据库是 Redis 服务器,只有几个键..所以我没有与另一个键混淆,如果你在谈论那个..
-
您是否尝试跳过
"*".getBytes()到"*" -
你能分享一些代码吗?我无法从字节中恢复 UUID 或了解发生了什么。这种行为可能与序列化程序/字节转换相关,但我对此并不完全确定。
-
没有。方法
keys只接收byte[],而不是String。而且我不确定问题是否存在,因为它返回一切正常..