【发布时间】:2014-03-09 08:47:48
【问题描述】:
是否可以将 ZUNIONSTORE 用于特定范围的排序集?我目前正在使用 Andy McCurdy 的 Python Redis 模块:https://github.com/andymccurdy/redis-py
例如。假设我有两个排序集。 set1 有 5 个元素,set2 有 10 个元素。
这里是set1:
[('1', 1.0), ('2', 2.0), ('3', 3.0), ('4', 4.0), ('5', 5.0)]
这里是set2
[('6', 6.0), ('7', 7.0), ('8', 8.0), ('9', 9.0), ('10', 10.0), ('11', 11.0), ('12', 12.0), ('13', 13.0), ('14', 14.0), ('15', 15.0)]
我尝试通过以下方式从 set2 中获取前 5 个元素:
trimmed_set = r_server.zrevrange('set2', 0, 4, withscores=True)
这会返回:
[('11', 11.0), ('12', 12.0), ('13', 13.0), ('14', 14.0), ('15', 15.0)]
到目前为止一切顺利。但现在我想将修剪后的集合与 set1 合并。
我试过了:
r_server.zunionstore('set3', ['set1', 'trimmed_set'])
这不起作用。它所做的只是让 set3 成为 set1 的副本。
有没有其他方法可以在不经过循环的情况下实现这样的目标?
【问题讨论】: