Redis五大資料型別——Zset(有序集合)
阿新 • • 發佈:2020-08-29
Redis五大資料型別——Zset(有序集合)
在set的基礎上,增加了一個值,例如:
- set的用法是,set k1 v1,
- 而zset則是,zset k1 score1 v1,而這裡的score就是用來排序
總結就是,新增欄位的時候加一個標誌
ZADD key [NX|XX] [CH] [INCR] score member [score member ...] 127.0.0.1:6379> ZADD zset 1 v1 (integer) 1 127.0.0.1:6379> ZADD zset 2 v2 3 v3 (integer) 2 127.0.0.1:6379> ZRANGE zset 0 -1 # ZRANGE key start stop [WITHSCORES] 1) "v1" # 檢視指定的key中,start到stop這個閉區間的所有值 2) "v2" 3) "v3" 127.0.0.1:6379> ZADD zset 0 v0 # 插入一個0 (integer) 1 127.0.0.1:6379> ZRANGE zset 0 -1 # 可以看到,0對應的值排在了第一位 1) "v0" 2) "v1" 3) "v2" 4) "v3" # =========== # ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset count] 127.0.0.1:6379> ZRANGEBYSCORE zset 1 2 # 指定範圍內的所有值 1) "v1" 2) "v2" 127.0.0.1:6379> ZRANGEBYSCORE zset -inf +inf # 負無窮到正無窮 1) "v0" 2) "v1" 3) "v2" 4) "v3" 127.0.0.1:6379> ZRANGEBYSCORE zset -inf +inf withscores # 指定區間的值,並且列印範圍內具體的值 1) "v0" 2) "0" 3) "v1" 4) "1" 5) "v2" 6) "2" 7) "v3" 8) "3" # =========== # ZREM key member [member ...] 127.0.0.1:6379> zadd zset 10 v1 30 v3 80 v4 (integer) 3 127.0.0.1:6379> ZREM zset v3 (integer) 1 127.0.0.1:6379> ZRANGE zset 0 -1 1) "v1" 2) "v4" 127.0.0.1:6379> ZRANGE zset 0 -1 withscores # 列印具體的"score" 1) "v1" 2) "10" 3) "v4" 4) "80" 127.0.0.1:6379> ZCARD zset # 檢視zset中集合的個數 (integer) 2 127.0.0.1:6379> ZREVRANGE zset 0 -1 # 以降序檢視指定區間的元素 1) "v4" 2) "v1" # =========== 127.0.0.1:6379> ZADD zset 10 v1 20 v2 30 v3 (integer) 3 127.0.0.1:6379> ZCOUNT zset 10 30 # 獲取指定閉區間的元素的數量 (integer) 3
其餘的一些API和函式,可以通過redis官網進行檢視。
案例思路:
-
和set相比,zset是有序,多了排序
-
top N
-
儲存班級成績,微博熱搜,積分排名等
將積分等加入zset,定時(比如每分鐘)重新整理zset
-
-
帶權重判斷:
- 普通事件:標誌為1
- 重要事件:標誌為2
- 緊急事件:標誌為3