Redis Zset(Sorted set)

介紹

sorted set 是有序集合蓉坎,它在 set 的基礎(chǔ)上增加了一個順序?qū)傩岳枇遥@一屬性在添加修改元素的時候可以指定却盘,每次指定后絮宁,會自動重新按新的值調(diào)整順序∽世#可以理解了有兩列的mysql 表泳梆,一列存 value鳖悠,一列存順序榜掌。操作中 key 理解為 sorted set 的名字。

REDIS_ZSET (有 序 集) 是 ZADD 乘综、 ZCOUNT 等 命 令 的 操 作 對 象憎账, 它 使 用REDIS_ENCODING_ZIPLIST 和 REDIS_ENCODING_SKIPLIST 兩種方式編碼:

指令

ZADD key score member [[score member] [score member] ...]

將一個或多個?member?元素及其?score?值加入到有序集?key?當(dāng)中。

如果某個?member?已經(jīng)是有序集的成員卡辰,那么更新這個?member?的?score?值胞皱,并通過重新插入這個?member?元素,來保證該?member?在正確的位置上九妈。

score?值可以是整數(shù)值或雙精度浮點數(shù)反砌。

如果?key?不存在,則創(chuàng)建一個空的有序集并執(zhí)行?ZADD?操作允蚣。

當(dāng)?key?存在但不是有序集類型時于颖,返回一個錯誤。

ZREM key member [member ...]

移除有序集?key?中的一個或多個成員嚷兔,不存在的成員將被忽略森渐。

當(dāng)?key?存在但不是有序集類型時,返回一個錯誤冒晰。

ZRANGE key start stop [WITHSCORES]

返回有序集?key?中同衣,指定區(qū)間內(nèi)的成員。

其中成員的位置按?score?值遞增(從小到大)來排序壶运。

具有相同?score?值的成員按字典序(lexicographical order?)來排列耐齐。

如果你需要成員按?score?值遞減(從大到小)來排列,請使用?ZREVRANGE?命令蒋情。

下標(biāo)參數(shù)?start?和?stop?都以?0?為底埠况,也就是說,以?0?表示有序集第一個成員棵癣,以?1?表示有序集第二個成員辕翰,以此類推。

你也可以使用負數(shù)下標(biāo)狈谊,以?-1?表示最后一個成員喜命,?-2?表示倒數(shù)第二個成員,以此類推河劝。

超出范圍的下標(biāo)并不會引起錯誤壁榕。

比如說,當(dāng)?start?的值比有序集的最大下標(biāo)還要大赎瞎,或是?start?>?stop?時牌里,?ZRANGE?命令只是簡單地返回一個空列表。

另一方面务甥,假如?stop?參數(shù)的值比有序集的最大下標(biāo)還要大二庵,那么 Redis 將?stop?當(dāng)作最大下標(biāo)來處理贪染。

可以通過使用?WITHSCORES?選項,來讓成員和它的?score?值一并返回催享,返回列表以?value1,score1,?...,?valueN,scoreN?的格式表示杭隙。

客戶端庫可能會返回一些更復(fù)雜的數(shù)據(jù)類型,比如數(shù)組因妙、元組等痰憎。


ZCARD key

返回有序集?key?的基數(shù)。

ZCOUNT key min max

返回有序集?key?中攀涵,?score?值在?min?和?max?之間(默認包括?score?值等于?min?或?max?)的成員的數(shù)量铣耘。

ZRANK key member

返回有序集?key?中成員?member?的排名。其中有序集成員按?score?值遞增(從小到大)順序排列以故。

排名以?0?為底蜗细,也就是說,?score?值最小的成員排名為?0?怒详。

使用?ZREVRANK?命令可以獲得成員按?score?值遞減(從大到小)排列的排名炉媒。

ZINCRBY key increment member

為有序集?key?的成員?member?的?score?值加上增量?increment?。

可以通過傳遞一個負數(shù)值?increment?昆烁,讓?score?減去相應(yīng)的值吊骤,比如?ZINCRBY?key?-5?member?,就是讓?member?的?score?值減去?5?静尼。

當(dāng)?key?不存在白粉,或?member?不是?key?的成員時,?ZINCRBY?key?increment?member?等同于?ZADD?key?increment?member?鼠渺。

當(dāng)?key?不是有序集類型時鸭巴,返回一個錯誤。

score?值可以是整數(shù)值或雙精度浮點數(shù)拦盹。

ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset count]

返回有序集?key?中鹃祖,所有?score?值介于?min?和?max?之間(包括等于?min?或?max?)的成員。有序集成員按?score?值遞增(從小到大)次序排列掌敬。

具有相同?score?值的成員按字典序(lexicographical order)來排列(該屬性是有序集提供的,不需要額外的計算)池磁。

可選的?LIMIT?參數(shù)指定返回結(jié)果的數(shù)量及區(qū)間(就像SQL中的?SELECT?LIMIT?offset,?count?)奔害,注意當(dāng)?offset?很大時,定位?offset?的操作可能需要遍歷整個有序集地熄,此過程最壞復(fù)雜度為 O(N) 時間华临。

可選的?WITHSCORES?參數(shù)決定結(jié)果集是單單返回有序集的成員,還是將有序集成員及其?score?值一起返回端考。

ZREMRANGEBYRANK key start stop

移除有序集?key?中雅潭,指定排名(rank)區(qū)間內(nèi)的所有成員揭厚。

區(qū)間分別以下標(biāo)參數(shù)?start?和?stop?指出,包含?start?和?stop?在內(nèi)扶供。

下標(biāo)參數(shù)?start?和?stop?都以?0?為底筛圆,也就是說,以?0?表示有序集第一個成員椿浓,以?1?表示有序集第二個成員太援,以此類推。

你也可以使用負數(shù)下標(biāo)扳碍,以?-1?表示最后一個成員提岔,?-2?表示倒數(shù)第二個成員,以此類推笋敞。

ZREMRANGEBYRANK key start stop

移除有序集?key?中碱蒙,指定排名(rank)區(qū)間內(nèi)的所有成員。

區(qū)間分別以下標(biāo)參數(shù)?start?和?stop?指出夯巷,包含?start?和?stop?在內(nèi)赛惩。

下標(biāo)參數(shù)?start?和?stop?都以?0?為底,也就是說鞭莽,以?0?表示有序集第一個成員坊秸,以?1?表示有序集第二個成員,以此類推澎怒。

你也可以使用負數(shù)下標(biāo)褒搔,以?-1?表示最后一個成員,?-2?表示倒數(shù)第二個成員喷面,以此類推星瘾。

ZSCORE key member

返回有序集?key?中,成員?member?的?score?值惧辈。

如果?member?元素不是有序集?key?的成員琳状,或?key?不存在,返回?nil?盒齿。


ZUNIONSTORE destination numkeys key [key ...] [WEIGHTS weight [weight ...]] [AGGREGATE SUM|MIN|MAX]

計算給定的一個或多個有序集的并集念逞,其中給定?key?的數(shù)量必須以?numkeys?參數(shù)指定,并將該并集(結(jié)果集)儲存到?destination?边翁。

默認情況下翎承,結(jié)果集中某個成員的?score?值是所有給定集下該成員?score?值之??。

WEIGHTS

使用?WEIGHTS?選項符匾,你可以為?每個?給定有序集?分別?指定一個乘法因子(multiplication factor)叨咖,每個給定有序集的所有成員的?score?值在傳遞給聚合函數(shù)(aggregation function)之前都要先乘以該有序集的因子。

如果沒有指定?WEIGHTS?選項,乘法因子默認設(shè)置為?1?甸各。

AGGREGATE

使用?AGGREGATE?選項垛贤,你可以指定并集的結(jié)果集的聚合方式。

默認使用的參數(shù)?SUM?趣倾,可以將所有集合中某個成員的?score?值之??作為結(jié)果集中該成員的?score?值聘惦;使用參數(shù)?MIN?,可以將所有集合中某個成員的?最小?score?值作為結(jié)果集中該成員的?score?值誊酌;而參數(shù)?MAX?則是將所有集合中某個成員的?最大?score?值作為結(jié)果集中該成員的?score?值部凑。

ZINTERSTORE destination numkeys key [key ...] [WEIGHTS weight [weight ...]] [AGGREGATE SUM|MIN|MAX]

計算給定的一個或多個有序集的交集,其中給定?key?的數(shù)量必須以?numkeys?參數(shù)指定碧浊,并將該交集(結(jié)果集)儲存到?destination?涂邀。

默認情況下,結(jié)果集中某個成員的?score?值是所有給定集下該成員?score?值之和.

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末箱锐,一起剝皮案震驚了整個濱河市比勉,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌驹止,老刑警劉巖浩聋,帶你破解...
    沈念sama閱讀 217,826評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異臊恋,居然都是意外死亡衣洁,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,968評論 3 395
  • 文/潘曉璐 我一進店門抖仅,熙熙樓的掌柜王于貴愁眉苦臉地迎上來坊夫,“玉大人,你說我怎么就攤上這事撤卢』吩洌” “怎么了?”我有些...
    開封第一講書人閱讀 164,234評論 0 354
  • 文/不壞的土叔 我叫張陵放吩,是天一觀的道長智听。 經(jīng)常有香客問我,道長渡紫,這世上最難降的妖魔是什么到推? 我笑而不...
    開封第一講書人閱讀 58,562評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮惕澎,結(jié)果婚禮上莉测,老公的妹妹穿的比我還像新娘。我一直安慰自己集灌,他們只是感情好悔雹,可當(dāng)我...
    茶點故事閱讀 67,611評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著欣喧,像睡著了一般腌零。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上唆阿,一...
    開封第一講書人閱讀 51,482評論 1 302
  • 那天益涧,我揣著相機與錄音,去河邊找鬼驯鳖。 笑死闲询,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的浅辙。 我是一名探鬼主播扭弧,決...
    沈念sama閱讀 40,271評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼记舆!你這毒婦竟也來了鸽捻?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,166評論 0 276
  • 序言:老撾萬榮一對情侶失蹤泽腮,失蹤者是張志新(化名)和其女友劉穎御蒲,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體诊赊,經(jīng)...
    沈念sama閱讀 45,608評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡厚满,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,814評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了碧磅。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片碘箍。...
    茶點故事閱讀 39,926評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖续崖,靈堂內(nèi)的尸體忽然破棺而出敲街,到底是詐尸還是另有隱情,我是刑警寧澤严望,帶...
    沈念sama閱讀 35,644評論 5 346
  • 正文 年R本政府宣布多艇,位于F島的核電站,受9級特大地震影響像吻,放射性物質(zhì)發(fā)生泄漏峻黍。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,249評論 3 329
  • 文/蒙蒙 一拨匆、第九天 我趴在偏房一處隱蔽的房頂上張望姆涩。 院中可真熱鬧,春花似錦惭每、人聲如沸骨饿。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,866評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽宏赘。三九已至绒北,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間察署,已是汗流浹背闷游。 一陣腳步聲響...
    開封第一講書人閱讀 32,991評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留贴汪,地道東北人脐往。 一個月前我還...
    沈念sama閱讀 48,063評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像扳埂,于是被迫代替她去往敵國和親业簿。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,871評論 2 354

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