Redis數(shù)據(jù)類型·集合(有序)

一、介紹:

  • 在集合類型的基礎(chǔ)上有序集合類型為集合中的每個(gè)元素都關(guān)聯(lián)了一個(gè)分?jǐn)?shù)

  • 這使得我們不僅可以完成插入、刪除和判斷元素是否存在等集合類型支持的操作,還能夠獲得分?jǐn)?shù)最高(或最低)的前N個(gè)元素、獲得指定分?jǐn)?shù)范圍內(nèi)的元素等與分?jǐn)?shù)有關(guān)的操作

  • 雖然集合中每個(gè)元素都是不同的,但是它們的分?jǐn)?shù)卻可以相同。

  • 有序集合類型在某些方面和列表類型有些相似

    • 二者都是有序的
    • 二者都可以獲得某一范圍的元素
  • 有序集合類型和列表也有著很大的區(qū)別,這使得它們的應(yīng)用場景也是不同的

    • 列表類型是通過鏈表實(shí)現(xiàn)的,獲取靠近兩端的數(shù)據(jù)速度極快,而當(dāng)元素增多后,訪問中間數(shù)據(jù)的速度會(huì)較慢,所以它更加適合實(shí)現(xiàn)如“新鮮事”或“日志”這樣很少訪問中間元素的應(yīng)用
    • 有序集合類型是使用散列表和跳躍表(Skip list)實(shí)現(xiàn)的,所以即使讀取位于中間部分的數(shù)據(jù)速度也很快
    • 列表中不能簡單地調(diào)整某個(gè)元素的位置,但是有序集合可以(通過更改這個(gè)元素的分?jǐn)?shù))
    • 有序集合要比列表類型更耗費(fèi)內(nèi)存

二、命令:

命令 說明
ZADD z value key 加入元素
ZADD命令的返回值是新加入到集合中的元素個(gè)數(shù)
如果該元素已經(jīng)存在則會(huì)用新的分?jǐn)?shù)替換原有的分?jǐn)?shù)
ZRANGE z startNum endNum 查看集合數(shù)據(jù),不帶分?jǐn)?shù)
ZRANGE z startNum endNum WITHSCORES 查看集合數(shù)據(jù),帶分?jǐn)?shù)
ZSCORE z key 獲得元素的分?jǐn)?shù)
ZRANGEBYSCORE z startScores endScores WITHSCORES 獲得指定分?jǐn)?shù)范圍的元素
ZINCRBY z value key 增加某個(gè)元素的分?jǐn)?shù)
ZCARD z 獲得集合中元素的數(shù)量
ZCOUNT z startScores endScores 獲得指定分?jǐn)?shù)范圍內(nèi)的元素個(gè)數(shù)
ZREM z key 刪除元素
ZRANK z key 獲得元素的排名
升序排列,從0開始計(jì)數(shù)
ZREVRANK z key 獲得元素的排名
降序排列,從0開始計(jì)數(shù)

三、有序集合類型實(shí)踐

  • 例:將博客文章按照點(diǎn)擊量排序
127.0.0.1:6379> ZADD posts:page.view 0 post:10:page.view
(integer) 1
127.0.0.1:6379> ZINCRBY posts:page.view 1 post:10:page.view
"1"
127.0.0.1:6379> ZRANGE posts:page.view 0 -1 WITHSCORES
1) "post:10:page.view"
2) "1"
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容