目錄
- 1、介紹
- 2、底層實現
- 【1】壓縮列表
- 【2】跳躍表+哈希表
- 3、常用命令
1、介紹
有序集合結合了集合和有序列表的特性,每個元素都會關聯一個分數,Redis正是通過這個分數來為集合中的成員進行排序。
2、底層實現
【1】壓縮列表
適用條件
1、元素數量 ≤ zset-max-ziplist-entries(默認128個)
2、每個元素的成員長度 ≤ zset-max-ziplist-value(默認64字節)
結構特點
1、連續內存存儲,每個元素由相鄰節點組成(成員和分數),按分數升序排列
2、插入/刪除需遍歷并移動數據,時間復雜度為O(N),適用于小規模數據的高效內存利用
【2】跳躍表+哈希表
適用條件
1、當數據規模超過閾值時,就切換為跳躍表和哈希表存儲
結構特點
1、哈希表存儲member->score映射(O(1)查詢)
2、跳躍表按score升序存儲
3、常用命令
命令 | 語法 | 作用 |
---|---|---|
ZADD | ZADD key score member [score member …] | 添加元素 |
ZREM | ZREM key member [member …] | 刪除元素 |
ZSCORE | ZSCORE key member | 獲取元素分數 |
ZRANK | ZRANK key member | 獲取元素升序排名 |
ZREVRANK | ZREVERANK key member | 獲取元素降序排名 |
ZCARD | ZCARD key | 獲取結合元素數量 |
ZCOUNT | ZCOUNT key min max | 統計分數區間元素數 |
ZRANGE | ZRANGE key start stop | 按升序返回區間元素 |
ZREVRANGE | ZREVRANGE key start stop | 按降序區間返回區間元素 |
ZRANGEBYSCORE | ZRANGEBYSCORE key min max | 返回分數區間元素 |
ZREVRANGEBYSCORE | ZREVRANGEBYSCORE key max min | 反向返回分數區間元素 |
ZINCRBY | ZINCRBY key increment member | 增加元素分數 |
ZPOPMAX | ZPOPMAX key | 刪除并返回最高分元素 |
ZPOPMIN | ZPOPMIN key | 刪除并返回最低分元素 |
ZUNIONSTORE | ZUNIONSTORE dest numkeys key [key …] | 并集計算存儲 |
ZINTERSTORE | ZINTERSTORE dest numkeys key [key …] | 交集計算存儲 |
ZSCAN | ZSCAN key cursor | 增量迭代元素 |