如果我有两个具有不同分数的不同成员集的排序集:
ZADD set1 10 "player1"
ZADD set1 15 "player2"
ZADD set1 5 "player3"
ZADD set2 30 "player1"
ZADD set2 22 "player3"
我需要通过对所有玩家进行分组并总结他们的分数来合并上述 2 组并得到如下所示:
set3 40 "player1"
set3 15 "player2"
set3 27 "player3"
我尝试的一种方法是将这些数据提取到 Ruby 对象中并执行分组逻辑。我正在寻找在 Redis 中执行此操作的方法。
最佳答案
你很幸运,因为 redis 支持开箱即用!
所以在你的情况下:
ZINTERSTORE set3 2 set1 set2 AGGREGATE SUM
瞧! set3 包含具有总分的常见玩家:
127.0.0.1:6379> ZRANGE set3 0 -1 WITHSCORES
1) "player3"
2) "27"
3) "player1"
4) "40"
关于sorting - Redis:将多个 ZSET 排序集分组和求和为一个排序集,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35600999/