06-Redis的sorted Set命令操作

1. 概述:

Sorted-Sets和Sets類型極為相似,它們都是字符串的集合未檩,都不允許重復(fù)的成員出現(xiàn)在一個Set中。它們之間的主要差別是Sorted-Sets中的每一個成員都會有一個分?jǐn)?shù)(score)與之關(guān)聯(lián)捕虽,Redis正是通過分?jǐn)?shù)來為集合中的成員進(jìn)行從小到大的排序纺裁。然而需要額外指出的是,盡管Sorted-Sets中的成員必須是唯一的菩貌,但是分?jǐn)?shù)(score)卻是可以重復(fù)的卢佣。在Sorted-Set中添加、刪除或更新一個成員都是非臣祝快速的操作虚茶,其時間復(fù)雜度為集合中成員數(shù)量的對數(shù)(二分查找)。由于Sorted-Sets中的成員在集合中的位置是有序的仇参,因此嘹叫,即便是訪問位于集合中部的成員也仍然是非常高效的。事實上诈乒,Redis所具有的這一特征在很多其它類型的數(shù)據(jù)庫中是很難實現(xiàn)的罩扇,換句話說,在該點(diǎn)上要想達(dá)到和Redis同樣的高效怕磨,在其它數(shù)據(jù)庫中進(jìn)行建模是非常困難的喂饥。

2. 命令列表
  • ZADD key score member [score] [member] O(log(N)) 時間復(fù)雜度中的N表示Sorted-Sets中成員的數(shù)量。/ 本次操作實際插入的成員數(shù)量肠鲫。
    添加參數(shù)中指定的所有成員及其分?jǐn)?shù)到指定key的Sorted-Set中员帮,在該命令中我們可以指定多組score/member作為參數(shù)。如果在添加時參數(shù)中的某一成員已經(jīng)存在导饲,該命令將更新此成員的分?jǐn)?shù)為新值捞高,同時再將該成員基于新值重新排序。如果鍵不存在渣锦,該命令將為該鍵創(chuàng)建一個新的Sorted-Sets Value硝岗,并將score/member對插入其中。如果該鍵已經(jīng)存在袋毙,但是與其關(guān)聯(lián)的Value不是Sorted-Sets類型辈讶,相關(guān)的錯誤信息將被返回。
  • ZCARD key O(1) 獲取與該Key相關(guān)聯(lián)的Sorted-Sets中包含的成員數(shù)量娄猫。 返回Sorted-Sets中的成員數(shù)量贱除,如果該Key不存在生闲,返回0。
  • ZCOUNT key min max O(log(N)+M) 該命令用于獲取分?jǐn)?shù)(score)在min和max之間的成員數(shù)量月幌。/ 分?jǐn)?shù)指定范圍內(nèi)成員的數(shù)量碍讯。
    針對min和max參數(shù)需要額外說明的是,-inf和+inf分別表示Sorted-Sets中分?jǐn)?shù)的最高值和最低值扯躺。缺省情況下捉兴,min和max表示的范圍是閉區(qū)間范圍,即min <= score <= max內(nèi)的成員將被返回录语。然而我們可以通過在min和max的前面添加"("字符來表示開區(qū)間倍啥,如(min max表示min < score <= max,而(min (max表示min < score < max澎埠。
  • ZINCRBY key increment member O(log(N)) / 以字符串形式表示的新分?jǐn)?shù)虽缕。
    該命令將為指定Key中的指定成員增加指定的分?jǐn)?shù)。如果成員不存在蒲稳,該命令將添加該成員并假設(shè)其初始分?jǐn)?shù)為0氮趋,此后再將其分?jǐn)?shù)加上increment。如果Key不存江耀,該命令將創(chuàng)建該Key及其關(guān)聯(lián)的Sorted-Sets剩胁,并包含參數(shù)指定的成員,其分?jǐn)?shù)為increment參數(shù)祥国。如果與該Key關(guān)聯(lián)的不是Sorted-Sets類型昵观,相關(guān)的錯誤信息將被返回。
  • ZRANGE key start stop [WITHSCORES] O(log(N)+M) 時間復(fù)雜度中的N表示Sorted-Set中成員的數(shù)量舌稀,M則表示返回的成員數(shù)量啊犬。/ 返回索引在start和stop之間的成員列表。
    該命令返回順序在參數(shù)start和stop指定范圍內(nèi)的成員扩借,這里start和stop參數(shù)都是0-based椒惨,即0表示第一個成員缤至,-1表示最后一個成員潮罪。如果start大于該Sorted-Set中的最大索引值,或start > stop领斥,此時一個空集合將被返回嫉到。如果stop大于最大索引值,該命令將返回從start到集合的最后一個成員月洛。如果命令中帶有可選參數(shù)WITHSCORES選項何恶,該命令在返回的結(jié)果中將包含每個成員的分?jǐn)?shù)值,如value1,score1,value2,score2...嚼黔。
  • ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset count] O(log(N)+M) / 返回分?jǐn)?shù)在指定范圍內(nèi)的成員列表细层。
    該命令將返回分?jǐn)?shù)在min和max之間的所有成員惜辑,即滿足表達(dá)式min <= score <= max的成員,其中返回的成員是按照其分?jǐn)?shù)從低到高的順序返回疫赎,如果成員具有相同的分?jǐn)?shù)盛撑,則按成員的字典順序返回∨醺悖可選參數(shù)LIMIT用于限制返回成員的數(shù)量范圍抵卫。可選參數(shù)offset表示從符合條件的第offset個成員開始返回胎撇,同時返回count個成員介粘。可選參數(shù)WITHSCORES的含義參照ZRANGE中該選項的說明晚树。最后需要說明的是參數(shù)中min和max的規(guī)則可參照命令ZCOUNT姻采。
  • ZRANK key member O(log(N)) 時間復(fù)雜度中的N表示Sorted-Set中成員的數(shù)量。/ 如果該成員存在题涨,則返回它的位置索引值偎谁。否則返回nil。
    Sorted-Set中的成員都是按照分?jǐn)?shù)從低到高的順序存儲纲堵,該命令將返回參數(shù)中指定成員的位置值巡雨,其中0表示第一個成員,它是Sorted-Set中分?jǐn)?shù)最低的成員席函。
  • ZREM key member [member ...] O(M log(N))時間復(fù)雜度中N表示Sorted-Set中成員的數(shù)量铐望,M則表示被刪除的成員數(shù)量。/實際被刪除的成員數(shù)量茂附。
    該命令將移除參數(shù)中指定的成員正蛙,其中不存在的成員將被忽略。如果與該Key關(guān)聯(lián)的Value不是Sorted-Set营曼,相應(yīng)的錯誤信息將被返回乒验。
  • ZREVRANGE key start stop [WITHSCORES] O(log(N)+M) 時間復(fù)雜度中的N表示Sorted-Set中成員的數(shù)量,M則表示返回的成員數(shù)量蒂阱。/ 返回指定的成員列表锻全。
    該命令的功能和ZRANGE基本相同,唯一的差別在于該命令是通過反向排序獲取指定位置的成員录煤,即從高到低的順序鳄厌。如果成員具有相同的分?jǐn)?shù),則按降序字典順序排序妈踊。
  • ZREVRANK key member O(log(N)) 時間復(fù)雜度中的N表示Sorted-Set中成員的數(shù)量了嚎。/ 如果該成員存在,則返回它的位置索引值。否則返回nil歪泳。
    該命令的功能和ZRANK基本相同萝勤,唯一的差別在于該命令獲取的索引是從高到低排序后的位置,同樣0表示第一個元素呐伞,即分?jǐn)?shù)最高的成員纵刘。
  • ZSCORE key member O(1) 獲取指定Key的指定成員的分?jǐn)?shù)。 如果該成員存在荸哟,以字符串的形式返回其分?jǐn)?shù)假哎,否則返回nil。
  • ZREVRANGEBYSCORE key max min [WITHSCORES] [LIMIT offset count] O(log(N)+M) 時間復(fù)雜度中的N表示Sorted-Set中成員的數(shù)量鞍历,M則表示返回的成員數(shù)量舵抹。/ 返回分?jǐn)?shù)在指定范圍內(nèi)的成員列表。
    該命令除了排序方式是基于從高到低的分?jǐn)?shù)排序之外劣砍,其它功能和參數(shù)含義均與>* ZRANGEBYSCORE相同惧蛹。
  • ZREMRANGEBYRANK key start stop O(log(N)+M)時間復(fù)雜度中的N表示Sorted-Set中成員的數(shù)量,M則表示被刪除的成員數(shù)量刑枝。/ 被刪除的成員數(shù)量香嗓。
    刪除索引位置位于start和stop之間的成員,start和stop都是0-based装畅,即0表示分?jǐn)?shù)最低的成員靠娱,-1表示最后一個成員,即分?jǐn)?shù)最高的成員掠兄。
  • ZREMRANGEBYSCORE key min max O(log(N)+M) 時間復(fù)雜度中的N表示Sorted-Set中成員的數(shù)量像云,M則表示被刪除的成員數(shù)量。/ 被刪除的成員數(shù)量蚂夕。
    刪除分?jǐn)?shù)在min和max之間的所有成員迅诬,即滿足表達(dá)式min <= score <= max的所有成員。對于min和max參數(shù)婿牍,可以采用開區(qū)間的方式表示侈贷,具體規(guī)則參照ZCOUNT。
  • 使用場景: 1. 根據(jù)時間順序產(chǎn)生的數(shù)據(jù)存儲

文章內(nèi)容整理自學(xué)習(xí)資料和網(wǎng)絡(luò), 侵刪.
點(diǎn)擊參看更多sortedset命令

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末等脂,一起剝皮案震驚了整個濱河市俏蛮,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌慎菲,老刑警劉巖嫁蛇,帶你破解...
    沈念sama閱讀 218,755評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件锨并,死亡現(xiàn)場離奇詭異露该,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)第煮,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,305評論 3 395
  • 文/潘曉璐 我一進(jìn)店門解幼,熙熙樓的掌柜王于貴愁眉苦臉地迎上來抑党,“玉大人,你說我怎么就攤上這事撵摆〉卓浚” “怎么了?”我有些...
    開封第一講書人閱讀 165,138評論 0 355
  • 文/不壞的土叔 我叫張陵特铝,是天一觀的道長暑中。 經(jīng)常有香客問我,道長鲫剿,這世上最難降的妖魔是什么鳄逾? 我笑而不...
    開封第一講書人閱讀 58,791評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮灵莲,結(jié)果婚禮上雕凹,老公的妹妹穿的比我還像新娘。我一直安慰自己政冻,他們只是感情好枚抵,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,794評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著明场,像睡著了一般汽摹。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上苦锨,一...
    開封第一講書人閱讀 51,631評論 1 305
  • 那天竖慧,我揣著相機(jī)與錄音,去河邊找鬼逆屡。 笑死圾旨,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的魏蔗。 我是一名探鬼主播砍的,決...
    沈念sama閱讀 40,362評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼莺治!你這毒婦竟也來了廓鞠?” 一聲冷哼從身側(cè)響起站绪,我...
    開封第一講書人閱讀 39,264評論 0 276
  • 序言:老撾萬榮一對情侶失蹤怎顾,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后恳守,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體榄审,經(jīng)...
    沈念sama閱讀 45,724評論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡砌们,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,900評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片浪感。...
    茶點(diǎn)故事閱讀 40,040評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡昔头,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出影兽,到底是詐尸還是另有隱情揭斧,我是刑警寧澤,帶...
    沈念sama閱讀 35,742評論 5 346
  • 正文 年R本政府宣布峻堰,位于F島的核電站讹开,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏捐名。R本人自食惡果不足惜萧吠,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,364評論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望桐筏。 院中可真熱鬧纸型,春花似錦、人聲如沸梅忌。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,944評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽牧氮。三九已至琼腔,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間踱葛,已是汗流浹背丹莲。 一陣腳步聲響...
    開封第一講書人閱讀 33,060評論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留尸诽,地道東北人甥材。 一個月前我還...
    沈念sama閱讀 48,247評論 3 371
  • 正文 我出身青樓,卻偏偏與公主長得像性含,于是被迫代替她去往敵國和親洲赵。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,979評論 2 355

推薦閱讀更多精彩內(nèi)容