Set
- 無序的
- Set 中的值只有一個(唯一性)
- 存儲最多 2的32次方 -1 個字符串
集合類型的常用操作是向集合中加入或刪除元素,判斷某個元素是否存在,由於集合在Redis內部是使用值爲空的散列表(hash table),所以這些操作時間複雜度都是 O(1) ,多個集合還可以進行並集、交集和差集運算
SADD 增加元素和 SREM 刪除元素
- SADD key value1 [value2 value3 …] // 添加一個或者多個
SADD 向集合中增加一個或者讀個元素,如果key 不存在自動創建,如果要加入的元素已經存在在集合中則會忽略該元素
127.0.0.1:6379[4]> SADD aa a1 a2 a3 a1
(integer) 3
127.0.0.1:6379[4]> SMEMBERS aa
1) "a2"
2) "a3"
3) "a1"
- SREM key value1 [value2 value3 …] // 刪除一個或者多個
返回刪除的個數
127.0.0.1:6379[4]> SMEMBERS aa
1) "a2"
2) "a3"
3) "a1"
127.0.0.1:6379[4]> SREM aa a1
(integer) 1
127.0.0.1:6379[4]> SMEMBERS aa
1) "a2"
2) "a3"
SMEMBERS 返回集合中所有的元素
SISMEMBER 判斷集合中是否有該元素
SISMEMBER key value
返回值爲 1 代表有,0 代表無
127.0.0.1:6379[4]> SMEMBERS aa
1) "a2"
2) "a3"
127.0.0.1:6379[4]> SISMEMBER aa a2
(integer) 1
127.0.0.1:6379[4]> SISMEMBER aa a1
(integer) 0
127.0.0.1:6379[4]>
集合運算
SDIFF key [k1 … ] 多個集合的差集運算
SINTER key [k1 … ] 多個集合的 交集運算
SUNION key [k1 … ] 多個集合的並集運算
SCARD 獲得集合中元素的個數
SCARD key
進行集合運算並將結果存儲
SDIFFSTORE destintion key [key …] 差集運算
SINTERSTORE destintion key [key …] 並集運算
SUNIONSTORE destintion key [key …] 交集運算
SRANDMEMBER 隨機獲取集合中的幾個值
SRANDMEMBER key [count]
- count 參數隨機獲取count個元素
- count 爲正數的時候, 會隨機從集合中獲取count個不重複的元素, 如果count 大於集合的元素個數,則返回集中的全部數據
- count 爲負數的時候,會從集合中獲取 |count| 個元素,且這些元素有可能相同
127.0.0.1:6379[4]> SMEMBERS aa
1) "a2"
2) "a3"
127.0.0.1:6379[4]> SRANDMEMBER aa
"a3"
127.0.0.1:6379[4]> SRANDMEMBER aa
"a2"
127.0.0.1:6379[4]> SRANDMEMBER aa 1
1) "a2"
127.0.0.1:6379[4]> SRANDMEMBER aa 1
1) "a3"
127.0.0.1:6379[4]>
127.0.0.1:6379[4]> SRANDMEMBER aa 2
1) "a2"
2) "a3"
127.0.0.1:6379[4]> SRANDMEMBER aa -2
1) "a2"
2) "a2"
SPOP 從集合中隨機彈出一個元素或多個元素
SPOP key [count]
127.0.0.1:6379[4]> SPOP aa 2
1) "a2"
2) "a3"
127.0.0.1:6379[4]> SMEMBERS aa
(empty list or set)