使用PFMERGE损坏的HLL对象



我有一个小系统,它在redis中使用HLL系统。这个系统可以:

db0中的
  1. GET myHll
  2. SET myHll "<hash>"到db1
  3. db1中的PFMERGE myOtherHll myHll合并2 hll

然而,有时我会收到:(error) INVALIDOBJ Corrupted HLL object detected

示例:

127.0.0.1:6379[7]> pfcount myHll
(integer) 2
127.0.0.1:6379[7]> get myHll
"HYLLx01x00x00x00x02x00x00x00x00x00x00x00@Gx84bxf8x84\xbc"
127.0.0.1:6379[7]> pfcount myOtherHll
(integer) 1
127.0.0.1:6379[7]> get myOtherHll
"HYLLx01x00x00x00x01x00x00x00x00x00x00x00cAxefxbfxbd\xefxbfxbd"
127.0.0.1:6379[7]> pfmerge anotherHll myOtherHll myHll
(error) INVALIDOBJ Corrupted HLL object detected

所以我的问题是:

  1. 理论上允许我GET/SET是hll哈希吗
  2. 如果我是,你知道为什么它在这里不起作用吗
  3. 如果我没有,我有其他方法吗

注意:我使用的是redis 6.2.4

感谢

在HyperLogLog哈希上使用GET/SET以达到您提到的目的是没有记录的,因此请避免以这种方式使用它。

相反,我建议使用DUMPdb0中获取密钥的序列化值,并使用RESTOREdb1上重新创建密钥:这些命令使用Redis本身在将数据集的时间点快照持久化到磁盘时使用的RDB格式。

最新更新