Redis研究(八)—有序集合類型 1

來源:互聯網
上載者:User

標籤:redis研究   有序集合類型   sorted   set   

一、介紹

sorted set為集合中的每個元素都關聯了一個分數,所以可以獲得分數最高或者最低的前N個元素,獲得指定分數範圍內的元素等與分數有關的操作。雖然集合中每個元素都是不同的,但是他們的分數卻可以相同。


有序集合類型與清單類型有些相似

(1)二者都是有序的

(2)二者都可以獲得某一個範圍的元素。

但是二者有很大的區別

(1)列表通過鏈表實現,擷取兩端資料速度快,訪問中間資料速度慢。

(2)有序集合類型使用散列表和跳躍表實現,擷取中間資料也很快(時間複雜度O(log(N)))。

(3)列表不能調整元素位置,有序集合可通過更改分數調整元素位置
(4)有序集合比列表耗記憶體。


二、命令

1.增加元素

zadd key score member

zadd用來插入元素和該元素的分數,如果元素存在,新值替換舊值。返回加入的元素個數。

記錄三名人的分數

可以修改Peter分數

分數不僅可以是整數,還支援雙精確度浮點數

+inf和-inf分別表示正無窮和負無窮。

2.獲得元素的分數

zscore key member

3.獲得排名在某個範圍內的元素列表

zrange key start stopzrevrange key start stop

按照分數從小到大返回,負數代表從後向前尋找,-1表示最後一個元素

如要一起返回分數

zrange時間複雜度O(logn+m),n為有序集合的基數,m為返回的元素個數。


如果分數相同,按照字典順序(0-9<A-Z<a-z),中文按照編碼方式,UTF-8編碼的情況如下、

zrevrange和zrange唯一不同在於前者按照分數從大到小給出結果。


4.獲得指定分數範圍的元素

zrangebyscore key min max
按照元素分數從小到大返回分數在min和max(包含)的元素:


如果不包含端點值,“(”符號,如含80,但不含100

獲得高於80(不包含80),但不知道高分多少。


增加一些值,測試用


現在想獲得分數高於60的從第二個人開始的3個人

想擷取低於或等於100分的前3個人,

5.增加某個元素的分數


zincrby key increment member

如果指定額元素不存在,Redis執行前會先建立它並將它的分數賦值為0再執行操作。


Redis研究(八)—有序集合類型 1

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.