1. 程式人生 > >Redis的資料結構之sorted-set

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使用場景

大型線上遊戲積分排行榜

構建索引資料