redis有序集合的相關命令有:1、“ZADD”,調用ziplistInsert函數,將成員和分值作為兩個節點分別插入到壓縮列表;2、“ZCARD”,調用ziplistLen函數,獲得壓縮列表包含節點的數量;3、“ZCOUND”命令等。
有序集合命令的實現方法
命令 | ziplist 編碼的實現方法 | zset 編碼的實現方法 |
---|---|---|
ZADD | 調用 ziplistInsert 函數,將成員和分值作為兩個節點分別插入到壓縮列表 | 先調用 zslInsert 函數,將新元素添加到跳躍表,然后調用 dictAdd 函數,將新元素關聯到字典 |
ZCARD | 調用 ziplistLen 函數,獲得壓縮列表包含節點的數量,將這個數量除以2得出集合元素的數量 | 訪問跳躍表數據結構的 length 屬性,直接訪問集合元素的數量 |
ZCOUND | 遍歷壓縮列表,統計分值在給定范圍內的節點的數量 | 遍歷跳躍表,統計分值在給定范圍內的節點的數量 |
ZRANGE | 從表頭向表尾遍歷壓縮列表,返回給定索引范圍內的所有元素 | 從表頭向表尾遍歷跳躍表,返回給定索引范圍內的所有元素 |
ZREVRANGE | 表尾向表頭遍歷壓縮列表,返回給定索引范圍內的所有元素 | 從表尾向表頭遍歷跳躍表,返回給定索引范圍的所有元素 |
ZRANK | 從表頭向表尾遍歷壓縮列表,查找給定的成員,沿途記錄經過節點的數量,當找到給定成員之后,沿途節點的數量就是該成員所對應元素的排名 | 從表頭向表尾遍歷跳躍表,查找給定的成員,沿途記錄經過節點的數量,當找到給定成員之后,沿途節點的數量就是該成員所對應元素的排名 |
ZREVRANK | 從表尾向表頭遍歷壓縮列表,查找給定的成員,沿途記錄經過節點的數量,當找到給定成員之后,沿途節點的數量就是該成員所對應元素的排名 | 從表尾向表頭遍歷跳躍表,查找給定的成員,沿途紀錄經過節點的數量,當找到給定成員之后,沿途節點的數量就是該成員所對應元素的排名 |
ZREM | 遍歷壓縮列表,刪除所有包含給定成員的節點,以及被刪除成員節點旁邊的分值節點 | 遍歷跳躍表,刪除所有包含了給定成員的跳躍表節點。并在字典中解除被刪除元素的成員和分值關聯 |
ZSCORE | 遍歷壓縮列表,查找包含了給定成員的節點,然后取出成員節點旁邊的分值節點保存的元素分值 | 直接從字典中取出給定成員的分值 |
相關學習推薦:redis教程
? 版權聲明
文章版權歸作者所有,未經允許請勿轉載。
THE END
喜歡就支持一下吧
相關推薦