redis - Redis如何根据两个不同的sorted set进行排序呢?

标签 redis sortedset

我有两个不同的排序集。

一个是编辑器ID:

article_id  editor_id
101         10
102         11
103         10
104         10

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

article_id  day
101         29
102         27
103         25
104         27

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

最佳答案

假设article_id是你成员(member)的值(value),那editor_id/day是各自排序集中的分数,并假设每个 article_id存在于两个排序集中,您可以执行以下操作:

ZINTERSTORE t 2 k1 k2 WEIGHTS 100 1 AGGREGATE SUM

解释:

  • t是保存结果的临时键
  • k1是存储 editor_id 的 Sorted Set
  • k2是存储 day 的 Sorted Set
  • 权重100乘以editor_id 100(即向右“移动”两个位置)
  • AGGREGATE SUM结果如下:editor_id * 100 + day

注意事项:

  • 你可以使用ZUNIONSTORE而不是为了同样的结果
  • 权重 100 的使用假设 day是一个2位数的值

关于redis - Redis如何根据两个不同的sorted set进行排序呢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29281920/

相关文章:

java - 如何用更快的东西替换 SortedSet 或加速它

redis - Windows 2008 R2 上使用 Redis 的大型数据集的缓存策略

node.js - 在带有 Node.js 的 Heroku 上使用 Socket.io 和 Redis

redis - 我可以只使用 2 个 Redis/Sentinel 服务器来管理我的 2 个服务器设置上的故障转移吗?

caching - Redis 加载 Lua 脚本并从文件缓存它(而不是 SCRIPT LOAD)

java - 修剪已排序的集合

c# - 有效删除 SortedSet<T> 中的第一个元素

list - 为什么使用 Sorted Set 而不是 List Redis

java - 如果我实现了比较器,为什么会出现类转换异常?

redis - 如何获取 List Redis 中最新元素的索引?