根据RedisdocumentationonPFADDcommand:ReturnvalueIntegerreply,specifically:1ifatleast1HyperLogLoginternalregisterwasaltered.0otherwise.谁能解释一下下面两点?这是否意味着如果计数器真的增加了1,PFADD将返回“1”?是否保证在运行PFADD之后,新的PFCOUNT将是PFCOUNT(before)+PFADD的输出?换句话说,单线程客户端能否仅使用PFADD的输出来跟踪计数?当PFADD返回“0”或“1”时,它们是否分别转换为“缓存命中”和“缓存未命中”?
我希望有一个集合来存储元素,之后我可以获得基数。我注意到我可以使用命令SADD或PFADD,然后使用SCARD或PFCOUNT。这两者有什么区别?优点/缺点是什么? 最佳答案 使用SADD时,您将数据存储在SET中.使用PFADD时,您将数据存储在Hyperloglog中,这是一种不同的数据结构。当您必须再次访问这些值时,SET用于存储唯一值。HyperLogLog允许获得使用PFADD添加的数据中唯一值数量的近似计数。当您有大量不同的值并且不需要取回它们时,它很有用。例如,它可用于获取高流量网站上给定页面在给定日期的唯一访问者数量
我需要处理队列中的多条记录。但由于一些外部问题,这些项目可能会偶尔出现多次。我只需要处理一次我计划使用的是PFADD到redis中的每条记录(作为md5sum),然后查看是否返回成功。如果没有显示增量,则该记录是重复的,否则处理该记录。这看起来很简单,但是我在使用PFADD时得到了太多的误报有更好的方法吗? 最佳答案 作为概率数据结构,Redis的HyperLogLog表现出0.81%的标准错误。您可以通过使用多个HLL来减少(但永远不会消除)误报的可能性,每个HLL计算您记录中不同哈希函数的值。另请注意,如果您使用的是单个HLL,