Redis(七)zset 有序集合
阿新 • • 發佈:2021-02-05
技術標籤: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("zset−key","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
歡迎訪問小程式: