1. 程式人生 > >redis有序集合orderset操作

redis有序集合orderset操作

無序集合操作

zadd key score1 value1 score2 value2 ...

新增元素,score就是排序的依據

zrange key start stop [withscores]

將集合元素排序後,返回名次[start stop]的元素,預設升序排序

withscores是取出的元素顯示scores

zrangebyscore key min max [withscores] limit offset N

將集合升序排序後,取score在[min, max]內的元素,並跳過offset個,取出N個

zrank key member

查詢集合成員member的排名,不存在返回nil

zrevrank key member

查詢集合成員member的降序排名

zremrangebyscore key min max

按照score來刪除元素,刪除範圍[min, max]

zrem key member

直接刪除成員member

zcard key

返回元素個數

zcount key min max
返回[min, max]區間內元素的數量

zinterstore destination numeys key1 [key2 ...] [WEIGHTS weight [weight...]] [AGGREGATE SUM|MIN|MAX]

求key1, key2的交集,key1,key2的權重分別是weight1,weight2

聚合方法用:sum,min,max

聚合的結果:儲存在dest集合內,numkeys是key的數量,redis就可以分辨後面哪些該是權重。

127.0.0.1:6379> zadd lisi 3 cat 5 dog 6 horse
(integer) 3
127.0.0.1:6379> zadd wang 2 cat 6 dog 8 horse 1 donkey
(integer) 4

127.0.0.1:6379> zinterstore result 2 lisi wang
(integer) 3

127.0.0.1:6379> zrange result 0 -1 withscores
1) "cat"
2) "5"
3) "dog"
4) "11"
5) "horse"
6) "14"

權重怎麼理解:

如果有交集,交集元素又有score,score怎麼處理?

aggrregate->score相加,min求最小score,max最大score

另:可以通過weight設定不同key的權重,交集時score * weight。