1. 程式人生 > 其它 >Redis(七)zset 有序集合

Redis(七)zset 有序集合

技術標籤:redis

Redis 有序集合和集合一樣也是string型別元素的集合,且不允許重複的成員。

不同的是每個元素都會關聯一個double型別的分數。redis正是通過分數來為集合中的成員進行從小到大的排序。

有序集合的成員是唯一的,但分數(score)卻可以重複。

一:zset有序集合資料結構

[
    "user":[
        "camellia1":90,
        "camellia2":100,
        "camellia3":90
    ]
]

二:zset有序集合相關操作命令(PHP+linux)

1:linux命令使用

(1):新增一個鍵值對到有序集合。如果 成功則返回1;如果鍵已經存在,返回0
zadd zset-key 90 "camellia1"   // 執行成功返回1
zadd zset-key 100 "camellia2"   // 執行成功返回1
zadd zset-key 90 "camellia3"   // 執行成功返回1
zadd zset-key 90 "camellia1"   // 執行失敗返回0
(2):通過hscore獲取一個給定鍵camellia1的值。
zscore zset-key "camellia1"
// 返回90
(3):獲取新增的所有元素,檢視剛剛的到底添加了哪幾個值
zrange zset-key 0 -1 withscores
輸出:

1) "camellia1"
2) "90"
3) "camellia3"
4) "90"
5) "camellia2"
6) "100"
(4):刪除一個鍵,成功返回1,否則,返回0
zrem zset-key "camellia1"   // 返回1

2:PHP命令使用

(1):插入一個鍵值對到zset-key有序集合。1代表插入成功;0元素代表已經存在
// 插入一個鍵值對到zset-key有序集合。1代表插入成功;0元素代表已經存在
    $res = $redis->zadd("zset-key",900,'camellia1'); // 返回1
(2):使用zscore獲取鍵對應的值。我們試試獲取camellia1的值。
// 取值
    $aa = $redis->zscore("zset-key","camellia1");
    var_dump($aa);           // 返回 900
(3):使用zrange獲取剛剛插入的全部值,看看裡面包含哪些鍵值對
// 獲取剛剛插入的值
    $str = $redis->zrange("zset-key",0,-1,true);


輸出:結果是一個完整的陣列

array(3) { [90]=> float(0) [900]=> float(0) ["camellia1"]=> float(900) }
(4):刪除其中一個鍵。成功返回1,反之,返回0

$rrr = r e d i s − > z r e m ( " z s e t − k e y " , " 90 " ) ; / / 返 回 i n t 1 v a r d u m p ( redis->zrem("zset-key","90"); // 返回int 1 var_dump( redis>zrem("zsetkey","90");//int1vardump(rrr);

3:zset常用命令

序號

命令及描述

1

ZADD   key score1 member1 [score2 member2] 
  向有序集合新增一個或多個成員,或者更新已存在成員的分數

2

ZCARD   key 
  獲取有序集合的成員數

3

ZCOUNT   key min max 
  計算在有序集合中指定區間分數的成員數

4

ZINCRBY   key increment member 
  有序集合中對指定成員的分數加上增量 increment

5

ZINTERSTORE   destination numkeys key [key ...] 
  計算給定的一個或多個有序集的交集並將結果集儲存在新的有序集合 key 中

6

ZLEXCOUNT   key min max 
  在有序集合中計算指定字典區間內成員數量

7

ZRANGE   key start stop [WITHSCORES] 
  通過索引區間返回有序集合指定區間內的成員

8

ZRANGEBYLEX   key min max [LIMIT offset count] 
  通過字典區間返回有序集合的成員

9

ZRANGEBYSCORE   key min max [WITHSCORES] [LIMIT] 
  通過分數返回有序集合指定區間內的成員

10

ZRANK   key member 
  返回有序集合中指定成員的索引

11

ZREM   key member [member ...] 
  移除有序集合中的一個或多個成員

12

ZREMRANGEBYLEX   key min max 
  移除有序集合中給定的字典區間的所有成員

13

ZREMRANGEBYRANK   key start stop 
  移除有序集合中給定的排名區間的所有成員

14

ZREMRANGEBYSCORE   key min max 
  移除有序集合中給定的分數區間的所有成員

15

ZREVRANGE   key start stop [WITHSCORES] 
  返回有序集中指定區間內的成員,通過索引,分數從高到低

16

ZREVRANGEBYSCORE   key max min [WITHSCORES] 
  返回有序集中指定分數區間內的成員,分數從高到低排序

17

ZREVRANK   key member 
  返回有序集合中指定成員的排名,有序整合員按分數值遞減(從大到小)排序

18

ZSCORE   key member 
  返回有序集中,成員的分數值

19

ZUNIONSTORE   destination numkeys key [key ...] 
  計算給定的一個或多個有序集的並集,並存儲在新的 key 中

20

ZSCAN   key cursor [MATCH pattern] [COUNT count] 
  迭代有序集合中的元素(包括元素成員和元素分值)

以上基本上是我看的redis ZSET有序集合型別的基本內容,有不足的地方,還請大佬指出。

有好的建議,請在下方輸入你的評論。

歡迎訪問個人部落格
https://guanchao.site

歡迎訪問小程式:
在這裡插入圖片描述