- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我需要处理队列中的多条记录。但由于一些外部问题,这些项目可能会偶尔出现多次。我只需要处理一次
我计划使用的是 PFADD 到 redis 中的每条记录(作为 md5sum),然后查看是否返回成功。如果没有显示增量,则该记录是重复的,否则处理该记录。
这看起来很简单,但是我在使用 PFADD 时得到了太多的误报
有更好的方法吗?
最佳答案
作为概率数据结构,Redis 的 HyperLogLog 表现出 0.81% 的标准错误。您可以通过使用多个 HLL 来减少(但永远不会消除)误报的可能性,每个 HLL 计算您记录中不同哈希函数的值。
另请注意,如果您使用的是单个 HLL,则无需对记录进行哈希处理 - 只需按原样 PFADD
即可。
或者,使用 Redis 集来保留所有标识符/哈希/记录,并使用 SISMEMBER
进行 100% 准确的成员资格测试。 .这种方法在存储每个已处理元素时需要更多 (RAM) 资源,但除非您的队列真的很大,否则对于适度的 Redis 实例来说应该不是问题。为了控制内存消耗,根据日期在 Set 之间切换并在 Set 键上设置到期时间(另一种方法是使用单个 Sorted Set 并通过在分数中保留它们的时间戳来手动从中删除旧项目)。
关于Redis PFADD 检查集合中存在的查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36030531/
我需要处理队列中的多条记录。但由于一些外部问题,这些项目可能会偶尔出现多次。我只需要处理一次 我计划使用的是 PFADD 到 redis 中的每条记录(作为 md5sum),然后查看是否返回成功。如果
我希望有一个集合来存储元素,之后我可以获得基数。我注意到我可以使用命令 SADD 或 PFADD,然后使用 SCARD 或 PFCOUNT。这两者有什么区别?优点/缺点是什么? 最佳答案 使用 SAD
我是一名优秀的程序员,十分优秀!