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。