我正在使用 redis 存储每个散列约 100k 记录的散列。我想在给定的哈希中实现过滤(分面)记录。请注意,一个哈希条目可以属于 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。
谢谢,保罗