1. 程式人生 > >redis zinterstrore指令的使用(實現多條件的有序索引)

redis zinterstrore指令的使用(實現多條件的有序索引)

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指令對集合進行歸併)