redis zinterstrore指令的使用(實現多條件的有序索引)
阿新 • • 發佈:2018-12-10
Redis Zinterstore 命令
Redis 有序集合(sorted set) Redis Zinterstore 命令計算給定的一個或多個有序集的交集,其中給定 key 的數量必須以 numkeys 引數指定,並將該交集(結果集)儲存到 destination 。
預設情況下,結果集中某個成員的分數值是所有給定集下該成員分數值之和。
語法
redis Zinterstore 命令基本語法如下:
redis 127.0.0.1:6379> ZINTERSTORE destination numkeys key [key ...] [WEIGHTS weight [weight ... ]] [AGGREGATE SUM|MIN|MAX]
可用版本
= 2.0.0
返回值
儲存到目標結果集的的成員數量。
例項
# 有序集 mid_test
redis 127.0.0.1:6379> ZADD mid_test 70 "Li Lei"
(integer) 1
redis 127.0.0.1:6379> ZADD mid_test 70 "Han Meimei"
(integer) 1
redis 127.0.0.1:6379> ZADD mid_test 99.5 "Tom"
(integer) 1
# 另一個有序集 fin_test
redis 127.0.0.1:6379 > ZADD fin_test 88 "Li Lei"
(integer) 1
redis 127.0.0.1:6379> ZADD fin_test 75 "Han Meimei"
(integer) 1
redis 127.0.0.1:6379> ZADD fin_test 99.5 "Tom"
(integer) 1
# 交集
redis 127.0.0.1:6379> ZINTERSTORE sum_point 2 mid_test fin_test
(integer) 3
# 顯示有序集內所有成員及其分數值
redis 127.0.0.1:6379> ZRANGE sum_point 0 -1 WITHSCORES
1) "Han Meimei"
2) "145"
3) "Li Lei"
4) "158"
5) "Tom"
6) "199"
總結
通過例項可以看到使用zinterstore歸併的有序集合,相同的元素的score會進行加和然後按照順序由大到小重新排列。利用這一特性可以實現多條件情況下的有序索引(不同條件根據不同權值使用不同的zset設定分數,然後使用zinterstore指令對集合進行歸併)