Redis 的命令詳解 - SET 篇

相關文章redis

Redis 的命令詳解 - Key 篇
Redis 的命令詳解 - String 篇
Redis 的命令詳解 - Hash 篇
Redis 的命令詳解 - List 篇bash

未完待續!!!post

SET 命令詳解

跟 SET 相關的命令一共有 15 種,這裏只介紹經常使用的,其餘請參考官網spa

SADD : 添加成員

起始版本 : 1.0.0
時間複雜度 : O(N),N爲要添加的成員的個數code

若是key不存在,則在添加前先建立一個set,若是指定成員在set中已存在,該成員將被忽略。get

語法

SADD key member1 [member2 ...]io

返回值

已添加到集合中的成員數量,不包括已經存在的成員,若是key對應的value不是 set 類型,返回錯誤。class

歷史

redis 版本 >= 2.4 時,該命令能夠接受多個member參數List

SREM : 刪除成員

起始版本 : 1.0.0
時間複雜度 : O(N),N爲要刪除的成員的個數語法

若是指定成員在set中不存在,則忽略。

語法

SREM key member1 [member2 ...]

返回值

刪除成員的數量。若是key不存在,則視爲空集,返回 0。

SCARD : 獲取set中的成員數量

起始版本 : 1.0.0
時間複雜度 : O(1)

語法

SCARD key

返回值

set 中的成員的數量,key 不存在時,返回0

SISMEMBER : 查當作員是否存在

起始版本 : 1.0.0
時間複雜度 : O(1)

語法

SISMEMBER key member

返回值

  • 1 : 若是元素是集合的成員。
  • 0 : 若是元素不是集合的成員,或者key不存在。

SMEMBERS : 獲取全部的成員

起始版本 : 1.0.0
時間複雜度 : O(N),其中N是集合中成員的數量

語法

SMEMBERS key

返回值

集合中的全部成員

SMOVE : 移動成員到另外一個集合

起始版本 : 1.0.0
時間複雜度 : O(1)

將成員從源set移動到目標set,此操做是原子性的。

若是目標set已存在指定的元素,則僅將指定元素從源set中刪除。

語法

SMOVE 源key 目標key member

返回值

  • 錯誤 : 源key目標key對應的 value 不是set類型
  • 0 : 源set不存在指定的成員
  • 1 : 移動成功

SDIFF : 求差集

起始版本 : 1.0.0
時間複雜度 : O(N),其中N是全部給定集合中元素的總數。

求第一個集合與後面全部集合之間的差集。

例如

key1 = {a,b,c,d}
key2 = {c}
key3 = {a,c,e}
複製代碼

則,SDIFF key1 key2 key3 = {b,d},簡單理解就是隻保留第一個集合中,其餘集合沒有的成員

若是 key 不存在,則認爲是空集。

語法

SDIFF key [otherKey ...]

返回值

結果集的全部成員

SDIFFSTORE : 存儲差集

起始版本 : 1.0.0
時間複雜度 : O(N),其中N是全部給定集合中元素的總數。

求第一個集合與後面全部集合之間的差集,並將它保存到目標集合中。若是目標集合已經存在,則將其覆蓋。

語法

SDIFFSTORE 目標key key [otherKey ...]

返回值

結果集中成員的數量

SINTER : 求交集

起始版本 : 1.0.0
時間複雜度 : 最壞的狀況 O(N * M),其中N是最小集合的成員個數,M是集合的個數。

求全部給定集合的交集

例如,有

key1 = {a,b,c,d}
key2 = {c}
key3 = {a,c,e}
複製代碼

SINTER key1 key2 key3 = {c},即全部集合中都有的成員

不存在的 key 被認爲是空集。若是其中一個 key 爲空集,則結果集也爲空集(由於與空集的交集都是空集)

語法

SINTER key [otherKey ...]

當只設置一個key時,返回該key的全部成員,此時至關於 SMEMBERS key 命令

返回值

結果集的全部成員。

SINTERSTORE : 存儲交集

起始版本 : 1.0.0
時間複雜度 : 最壞的狀況 O(N * M),其中N是最小集合的成員個數,M是集合的個數。

求全部給定集合的交集,並將它保存到目標集合中。若是目標集合已經存在,則將其覆蓋。

不存在的 key 被認爲是空集。若是其中一個 key 爲空集,則結果集也爲空集

語法

SINTERSTORE 目標key key [otherKey ...]

返回值

結果集中成員的數量

SUNION : 求並集

起始版本 : 1.0.0
時間複雜度 : O(N),其中N是全部給定集合中元素的總數

求全部給定集合的並集,不存在的key被認爲是空集。

語法

SUNION key [otherKey ...]

返回值

結果集中的全部成員

SUNIONSTORE : 存儲並集

起始版本 : 1.0.0
時間複雜度 : O(N),其中N是全部給定集合中元素的總數

將全部給定集合的並集存儲到目標集合中,不存在的key被認爲是空集,若是目標集合已存在,則覆蓋。

語法

SUNIONSTORE 目標key key [otherKey ...]

返回值

結果集中成員的數量

SPOP : 隨機刪除(彈出)指定個數的成員

起始版本 : 1.0.0
時間複雜度 : O(1)

隨機刪除並返回指定個數的成員

語法

SPOP key [count]

redis 3.2 及以上版本才能夠指定 count 參數

返回值

隨機刪除成員

SRANDMEMBER : 隨機返回指定個數的成員

起始版本 : 1.0.0
時間複雜度 : O(N),其中N爲要返回成員的個數

redis 2.6 及以上版本才能夠指定 count 參數

不指定 count 時,隨機返回一個成員

指定 count

  • 若是 count 爲正數,隨機返回 count 個不一樣成員
  • 若是 count 爲負數,隨機選擇 1 個成員,返回 count 個

語法

SRANDMEMBER key [count]

返回值

返回的成員

相關文章
相關標籤/搜索