【问题标题】:How can Redis sort according to two different sorted sets?Redis如何根据两个不同的排序集进行排序?
【发布时间】:2015-03-26 15:05:44
【问题描述】:

我有两个不同的排序集。

一个是编辑器ID:

article_id  editor_id
101         10
102         11
103         10
104         10

另一个排序集用于日期排序:

article_id  day
101         29
102         27
103         25
104         27

我想合并这些显示第一个编辑器第二天排序状态的集合。 我应该使用哪些命令?

【问题讨论】:

  • Redis 排序集是字符串的集合,每个字符串都与一个分数相关联。你数据的哪一部分是关键、价值和分数?
  • article_id 值,editor_id 分数,key1 和 key2 为键名。

标签: redis sortedset


【解决方案1】:

假设article_id 是您的成员值,editor_id/day 是相应排序集中的分数,并假设每个article_id 都存在于both排序集中,您可以执行以下操作:

ZINTERSTORE t 2 k1 k2 WEIGHTS 100 1 AGGREGATE SUM

解释:

  • t 是保存结果的临时键
  • k1 是存储editor_id 的有序集
  • k2 是存储day 的有序集
  • 权重 100 将 editor_id 乘以 100(即向右“移动”两个位置)
  • AGGREGATE SUM 得到以下分数:editor_id * 100 + day

注意事项:

  • 您可以使用 ZUNIONSTORE 代替,以获得相同的结果
  • 权重 100 的使用假定 day 是 2 位值

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-10-17
    • 2016-11-30
    • 1970-01-01
    • 2017-03-29
    • 2019-09-16
    • 2023-02-02
    • 2023-02-24
    • 1970-01-01
    相关资源
    最近更新 更多