过滤Redis哈希条目
|
我正在使用redis存储每个哈希有约100k条记录的哈希。我想实现过滤(刻面)给定哈希值内的记录。请注意,哈希条目可以属于n个过滤器。
看完这个,看起来我应该:
对每个过滤器实施排序的SET。 SET中的值对应于HASH中的键。
从给定的过滤器SET中检索HASH键。
一旦我从SET中获得HASH键,就从HASH中获取相应的条目。这应该给我所有属于过滤器的条目。
首先,上述方法在较高水平上是否正确?
假设方法还可以,我所缺少的是检索HASH条目的最有效的实现方式是什么?一旦有了HASH键,我是否在思考,然后应该使用PIPELINE对通过每个HASH键传递的多个HGETALL命令进行排队?有没有更好的方法?
我对使用PIPELINE的担心是,我认为它将在服务该命令的同时阻止所有其他客户端。我将分页筛选结果,每页显示500个结果。使用多个基于浏览器的客户端执行过滤时,更不用说填充SET和HASH的后端进程了,如果PIPELINE确实阻塞了,这听起来可能会引起很多争用。有人可以对此提供意见吗?
如果这有助于我使用2.2.4 Redis,则对于Web客户端使用predis,对于后端使用servicestack。
谢谢,
保罗
没有找到相关结果
已邀请:
3 个回复
缝皋
掀辟髓观粟
柑恫祟
/
也是如此。与阻止/锁定Redis最接近的事情是使用
进行乐观锁定,如果自调用
以来已写入redis密钥,则将导致
失败。 与在流水线块中调用
500次相比,仅调用
效率更高,其中
是您要查找的500个哈希键的数组。这将导致对redis的单个调用,这与流水线操作相同,但是执行起来应该更快,因为您不会在ruby中循环。