小编典典

如何结合排序的集合Redis?

redis

sorted set在Redis商店中使用type。我为每个用户创建一个自己的 KEY 并将数据放在此处:

KEY 示例

FEED:USER:**1**, FEED:USER:**2**, FEED:USER:**3**

我想从Redis中为用户键选择数据:1、2、3,并按得分(时间戳)进行排序。

如果只是简单地看问题,我需要跨时从任何KEY中选择一个数据,然后将按分数排序的所有结果组合在一起。


阅读 274

收藏
2020-06-20

共1个答案

小编典典

有两种方法可以执行此操作,但是正确的方法取决于您要执行的操作。例如:

  1. 您可以在代码中为每个FEED:USER:n键使用ZRANGEBYSCORE(或ZREVRANGEBYSCORE),并在客户端中“合并”答复
  2. 您可以对相关键执行ZUNIONSTORE,然后对客户端的结果执行ZRANGEBYSCORE。
  3. 但是,如果您的“进给量”很大,则#2的流量应颠倒-首先是范围,然后是联合。
  4. 您还可以使用一些Lua脚本在服务器端进行类似类型的处理。

编辑:进一步澄清

回覆。1-可以在客户端从ZRANGEBYSCORE获得的结果上进行合并,也可以使用服务器端Lua脚本来进行合并。使用WITHSCORES获取时间戳并对其进行合并/排序。不管您选择运行此代码的位置(我可能会使用Lua进行数据本地化),实现方法均由您决定-
如果您需要帮助,请执行lmk :)

2020-06-20