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
- 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]
返回值
返回的成員