1. 程式人生 > 程式設計 >Redis 的命令詳解 - SET 篇

Redis 的命令詳解 - SET 篇

相關文章

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

SET 命令詳解

跟 SET 相關的命令一共有 15 種,這裡只介紹常用的,其他請參考官網

SADD : 新增成員

起始版本 : 1.0.0
時間複雜度 : O(N),N為要新增的成員的個數

如果key不存在,則在新增前先建立一個set,如果指定成員在set中已存在,該成員將被忽略。

語法

SADD key member1 [member2 ...]

返回值

已新增到集合中的成員數量,不包括已經存在的成員,如果key對應的value不是 set 型別,返回錯誤。

歷史

redis 版本 >= 2.4 時,該命令可以接受多個member引數

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,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,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]

返回值

返回的成員