redis集合類型(set)

redis集合中的每個元素都是不同的,且沒有順序,一個集合類型(set)鍵可以至多存儲2^32 -1個字符串。集合類型和列表類型有相似之處,但是也很容易將他們區(qū)分開來,比如他們存儲內(nèi)容都是2^32 -1個字符串,列表類型是有序的而集合類型不是,集合類型的鍵是唯一的而列表類型不是。

集合類型的常用操作是向集合中加入或刪除元素、判斷某個元素是否存在等,由于集合類型在Redis內(nèi)部使用的使散列表(hash table)實現(xiàn)的,所以這些操作的時間復雜度都是O(1)。最方便的使多個集合類型鍵之間還可以進行并集、交集和差集運算。

命令:
1、增加\刪除元素

SADD key member [member ...]

SREM key member [member ...]

SADD命令用來向集合中增加一個或多個元素,如果鍵不存在則會自動創(chuàng)建。因為在一個集合中不能有相同的元素,所以如果要加入的元素已經(jīng)存在于集合中就會忽略這個元素。此命令返回的使成功加入的元素個數(shù)。

SREM命令用來從集合中刪除一個或多個元素,并返回刪除成功的個數(shù)。

2、獲得集合中的所有元素

SMEMBERS key

此命令返回集合中的所有元素。慎用

3、判斷元素是否在集合中

SISMEMBER key member

判斷一個元素是否在集合中是一個時間復雜度為O(1)的操作,無論集合中有多少個元素,SISMEMBER命令始終可以極快的返回結果。當值存在是返回1,值不存在或者鍵不存在時返回0.

4、集合運算

SDIFF key [key ...]

SINTER key [key ...]

SUNION key [key ..]

SDIFF命令用來對多個集合執(zhí)行差集原酸。集合A與B的差集表示A-B,代表所有屬于A且不屬于B的元素構成的集合。此命令支持同事傳入多個鍵,例如A\B\C計算順序是先計算A-B ,在計算之前結果與C的差集。

SINTER命令是用來對多個集合執(zhí)行交集運算,例如集合A與B交集表示屬于A且屬于B的元素構成的集合,同樣的此命令也支持傳入多個鍵,計算同時屬于這些鍵的元素。

SUNION命令用來對多個集合執(zhí)行并集運算,例如集合A與B并集原酸表示屬于A或者屬于B的元素構成的集合。

5、獲得集合中元素個數(shù)

SCARD key 計算集合中元素的個數(shù),返回數(shù)量。

6、進行集合運算并將結果存儲

SDIFFSTORE destination key [key ...]

SINTERSTORE destination key [key ...]

SUNIONSTORE destination key [key ...]

以上三個命令計算方式跟集合的運算一致,唯一的區(qū)別就是不會直接返回結果,而是將結果存儲在destination鍵中。

7、隨機獲得集合中的元素

SRANDMEMBER key [count]

此命令用來隨機從集合中獲取一個或多個元素(count),根據(jù)count的不同(正負),具體表現(xiàn)也不相同:

1)當count為正數(shù)時,SRANDMEMBER會隨機從集合里獲取count個不重復的元素,如果count大于集合中的元素個數(shù)時,則會返回集合中的全部元素。

2)當count為負數(shù)時,SRANDMEMBER會隨機從及合理獲得|count|個元素,這些元素有可能相同。

?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

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

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