【发布时间】:2011-08-06 05:15:44
【问题描述】:
我正在使用 redis 存储每个散列约 10 万条记录的散列。我想在给定的哈希中实现过滤(分面)记录。请注意,一个哈希条目可以属于 n 个过滤器。
- 为每个过滤器实现一个排序的 SET。 SET 中的值对应于 HASH 中的键。
- 从给定的过滤器 SET 中检索 HASH 键。
- 一旦我从 SET 中获得了 HASH 键,就从 HASH 中获取相应的条目。这应该会给我所有属于过滤器的条目。
首先,上述方法在高层次上是否正确?
假设方法没问题,我缺少的一点是检索 HASH 条目的最有效实现是什么?我的想法是否正确,一旦我有了 HASH 键,我应该使用 PIPELINE 将多个 HGETALL 命令排队通过每个 HASH 键?有更好的方法吗?
我对使用 PIPELINE 的担忧是,我相信它会在为命令提供服务时阻止所有其他客户端。我将对过滤后的结果进行分页,每页有 500 个结果。由于多个基于浏览器的客户端执行过滤,更不用说填充 SET 和 HASH 的后端进程,如果 PIPELINE 确实阻塞,听起来可能会出现很多争用。有人可以对此发表看法吗?
如果有帮助,我使用的是 2.2.4 redis,web 客户端使用 predis,后端使用 servicestack。
谢谢, 保罗
【问题讨论】:
-
我正在尝试做类似的过滤器,但我有大量的数据集(100 万条记录)要过滤。你有没有找到更好的方法在 redis 中进行过滤?