Redis的資料結構之sorted-set
儲存Sorted-Set
Sorted-Set和Set的區別:
Sorted-Set中的成員在集合中的位置是有序的
儲存Sorted-set常用命令
新增元素
獲得元素
刪除元素
範圍查詢
擴充套件命令
zadd 新增元素 裡面包括評分和值
127.0.0.1:6379> zadd sort1 5 a 4 b 6 c
(integer) 3
我們新增集合sort1 元素是a,b,c 評分分別是5,4,6
集合裡的排序是根據評分從小到大排序的;
zrange是查詢元素 -1代表是最後一個
127.0.0.1:6379> zrange sort1 0 -1
1) "b"
2) "a"
3) "c"
假如我們繼續新增元素
這裡分兩種情況
假如次元素集合裡面已經有了,則覆蓋
我們繼續新增b 此時評分改成7
127.0.0.1:6379> zadd sort1 7 b
(integer) 0
通過zscore 獲取b的評分
127.0.0.1:6379> zscore sort1 b
"7"
發現已經修改了;
127.0.0.1:6379> zrange sort1 0 -1
1) "a"
2) "c"
3) "b"
假如新增的元素不在集合裡,則新增進去
127.0.0.1:6379> zadd sort1 9 d
(integer) 1
127.0.0.1:6379> zrange sort1 0 -1
1) "a"
2) "c"
3) "b"
4) "d"
刪除元素zrem
127.0.0.1:6379> zrem sort1 b
(integer) 1
127.0.0.1:6379> zrange sort1 0 -1
1) "a"
2) "c"
3) "d"
zcard 檢視集合裡的元素個數
127.0.0.1:6379> zcard sort1
(integer) 3
withscores 把評分也顯示出來
127.0.0.1:6379> zrange sort1 0 -1 withscores
1) "a"
2) "5"
3) "c"
4) "6"
5) "d"
6) "9"
zrevrange 降序排列
127.0.0.1:6379> zrevrange sort1 0 -1 withscores
1) "d"
2) "9"
3) "c"
4) "6"
5) "a"
6) "5"
我們再加兩個元素
127.0.0.1:6379> zadd sort1 10 e 5 f
(integer) 2
zremrangebyrank 根據排名來刪除元素 刪除3個
127.0.0.1:6379> zremrangebyrank sort1 0 2
(integer) 3
127.0.0.1:6379> zrange sort1 0 -1 withscores
1) "d"
2) "9"
3) "e"
4) "10"
再新增元素
127.0.0.1:6379> zadd sort1 11 f 16 g 18 h
(integer) 3
127.0.0.1:6379> zrange sort1 0 -1 withscores
1) "d"
2) "9"
3) "e"
4) "10"
5) "f"
6) "11"
7) "g"
8) "16"
9) "h"
10) "18"
zremrangebyscore 根據具體評分範圍來刪除元素
127.0.0.1:6379> zremrangebyscore sort1 10 16
(integer) 3
127.0.0.1:6379> zrange sort1 0 -1 withscores
1) "d"
2) "9"
3) "h"
4) "18"
再新增元素
127.0.0.1:6379> zadd sort1 20 i 23 j 30 k
(integer) 3
127.0.0.1:6379> zrange sort1 0 -1 withscores
1) "d"
2) "9"
3) "h"
4) "18"
5) "i"
6) "20"
7) "j"
8) "23"
9) "k"
10) "30"
zrangebyscore 根據評分範圍來查詢元素
127.0.0.1:6379> zrangebyscore sort1 18 23 withscores
1) "h"
2) "18"
3) "i"
4) "20"
5) "j"
6) "23"
limit 限定查詢起始 類似分頁
127.0.0.1:6379> zrangebyscore sort1 18 23 withscores limit 0 2
1) "h"
2) "18"
3) "i"
4) "20"
zincrby 給指定元素加分
127.0.0.1:6379> zincrby sort1 5 h
"23"
127.0.0.1:6379> zrange sort1 0 -1 withscores
1) "d"
2) "9"
3) "i"
4) "20"
5) "h"
6) "23"
7) "j"
8) "23"
9) "k"
10) "30"
zcount 查詢指定評分範圍的元素個數
127.0.0.1:6379> zcount sort1 20 23
(integer) 3
Sorted-Set使用場景
大型線上遊戲積分排行榜
構建索引資料