?
This document uses PHP Chinese website manual Release
ZADD key [NX|XX] [CH] [INCR] score member [score member ...]
自1.2.0起可用。
時間復雜度:添加每個項目的O(log(N)),其中N是排序集合中元素的數(shù)量。
將指定分數(shù)的所有指定成員添加到key
存儲的已排序集??梢灾付ǘ鄠€樂譜/成員對。如果指定的成員已經(jīng)是有序集合的成員,則更新得分并將元素重新插入到正確的位置以確保正確的排序。
如果key
不存在,則創(chuàng)建一個新的有指定成員作為唯一成員的有序集合,就像已排序的集合是空的一樣。如果密鑰存在但不包含有序集合,則返回錯誤。
得分值應該是雙精度浮點數(shù)的字符串表示。+inf
和-inf
值是有效的值也是如此。
ZADD 支持在密鑰名稱和第一個分數(shù)參數(shù)之前指定的選項列表。選項是:
XX:只更新已經(jīng)存在的元素。切勿添加元素。
NX:不要更新已有的元素??偸翘砑有碌脑亍?/p>
CH:從添加的新元素數(shù)量修改返回值到更改的元素總數(shù)(CH 是已更改的縮寫)。更改的元素是添加的新元素以及已更新分數(shù)的元素。因此,在命令行中指定的與過去相同得分的元素不計算在內(nèi)。注意:通常 ZADD 的返回值只計算添加的新元素的數(shù)量。
INCR:指定此選項時,ZADD 的行為與 ZINCRBY 相同。在此模式下只能指定一個樂譜元素對。
Redis 排序集使用雙64位浮點數(shù)來表示分數(shù)。在所有我們所支持的架構(gòu),這表示為IEEE 754浮點數(shù),即能代表之間的精確整數(shù)-(2^53)
和+(2^53)
包括在內(nèi)。更實用的說,-9007199254740992和9007199254740992之間的所有整數(shù)都是完全可以代表的。較大的整數(shù)或分數(shù)在內(nèi)部以指數(shù)形式表示,所以可能只得到十進制數(shù)的近似值,或者設(shè)置為分數(shù)的非常大的整數(shù)。
排序集按照他們的得分按升序排列。同一元素只存在一次,不允許重復元素。可以通過 ZADD 修改得分,ZADD 會更新元素得分,并且作為副作用,它在有序集合上的位置以及 ZINCRBY 可以用來將得分相對于之前的值更新。
元素的當前得分可以使用 ZSCORE 命令檢索,也可以用來驗證元素是否已經(jīng)存在。
分揀臺的介紹,請參閱數(shù)據(jù)類型頁排序集。
雖然相同的元素不能在有序集合中重復使用,因為每個元素都是唯一的,所以可以添加多個具有相同得分的不同元素。當多個元素具有相同的得分時,它們按照字典順序排列(它們?nèi)匀话凑盏梅肿鳛榈谝粋€鍵來排序,但是,在本地,具有相同得分的所有元素按字典順序相對有序)。
使用的字典順序是二進制的,它將字符串比作字節(jié)數(shù)組。
如果用戶將所有元素插入到具有相同分數(shù)的排序集合中(例如0),則排序集合中的所有元素按照字典順序排序,并且可以使用命令 ZRANGEBYLEX 對元素進行范圍查詢(注意:也可以使用 ZRANGEBYSCORE 按分數(shù)范圍查詢排序集)。
整數(shù)回復,具體為:
添加到已排序集合的元素數(shù)量,不包括已經(jīng)為其更新分數(shù)的元素。如果指定了 INCR 選項,則返回值將是批量字符串回復:
member
(雙精度浮點數(shù))的新分數(shù),以字符串表示。
>= 2.4
:接受多個元素。在 Redis 版本超過2.4的情況下,每次調(diào)用都可以添加或更新單個成員。
redis> ZADD myzset 1 "one" (integer) 1
redis> ZADD myzset 1 "uno" (integer) 1
redis> ZADD myzset 2 "two" 3 "three" (integer) 2
redis> ZRANGE myzset 0 -1 WITHSCORES 1) "one" 2) "1" 3) "uno" 4) "1" 5) "two" 6) "2" 7) "three" 8) "3"