使用Redis过滤大集

时间:2017-03-06 03:55:13

标签: filter redis

情景:

我有一大堆具有以下属性的产品

  • 这些产品的可用性/价格(原始数据)被缓存,并将被多个客户使用。

  • 每个客户都会有不同的标记规则,因此最终价格不同。

我需要根据价格等对这些产品进行过滤。

但是,从redis加载它们并重新应用规则以使用redis构建过滤器是很昂贵的。

有更好的方法吗?

1 个答案:

答案 0 :(得分:0)

这在某种程度上是可行的,通过使用sortedsets(Z *命令)lexical ordering&复合排序集成员键假设:

  • 过滤条件将是排序集成员键的一部分
  • 过滤标准是有限的&确定性的(所有这些都出现在列表中的每个成员中,或者至少它可以通过使用某种类型的占位符来表示,例如关键字:na:,其中不存在条件)
  • 过滤条件值本质上是标量,并不代表一系列数据。请注意,这不是强制性的,但如果您仍然选择太多代表必须包含多少'范围的数据。价值键,你最终会得到笛卡尔产品'导致存储库维护(写入/更新)成为一场噩梦,并为您的redis实例甚至集群处理太多密钥创建方式。

如果以上所有情况适用,SCAN(或ZSCAN更具体),是您的朋友

您还可以找到更多信息here