看了下redis文档,卧槽写的一点都不清楚,网上找的大部分都是抄的文档,后边自己好好研究了下,说下自己的理解,做个记录,免得以后自己也忘了,还是按文档上的例子来吧
127.0.0.1:6379> zadd zset1 1 "one" 2 "two"
(integer) 2
127.0.0.1:6379> zadd zset2 1 "one" 2 "two" 3 "three"
先来个不带这玩意的:WEIGHTS
127.0.0.1:6379> zunionstore out 2 zset1 zset2
(integer) 3
127.0.0.1:6379> zrange out 0 -1 withscores
1) "one"
2) "2" (解释: 1 +1 =2 ) 也就是第一个有续集和的one的分值跟第二个集合one的分值相加,跟 one的顺序没关系,只是相同成员的分值相加
3) "three"
4) "3" (解释: 0 +3 =2 )
5) "two"
6) "4" (解释: 2 +2 =4 )
zunionstore out 2 zset1 zset2 这条命令中的2表示两个有序集合,如果合并三个集合,这里就是3
现在带上这玩意:WEIGHTS
127.0.0.1:6379> zunionstore out2 2 zset1 zset2 weights 2 3
(integer) 3
127.0.0.1:6379> zrange out2 0 -1 withscores
1) "one"
2) "5" (解释: 1*2 + 1*3 = 5 也就是第一个集合的每个成员的分值乘以2加上第二个集合的没一个成 员的分值乘以3
3) "three"
4) "9" (0*2 + 3*3 = 9)
5) "two"
6) "10" (2*2 + 2*3 = 10)
这样就清楚多了
原文链接:https://blog.csdn.net/laiyijian/article/details/123505580