Redis 的 set 是 string 類型的無序集合。set 的是通過 hash table 實(shí)現(xiàn)的脚翘,所以添加、刪除和查找的復(fù)雜度都是 O(1)鞋真。set 集合類型除了基本的添加刪除操作涩咖,其他有用的操作還包含集合的取并集(union)檩互,交集(intersection)咨演,差集(difference)。
1 sadd
向名稱為 key 的 set 中添加元素
127.0.0.1:6379> sadd set hello
(integer) 1
127.0.0.1:6379> sadd set world
(integer) 1
127.0.0.1:6379> sadd set world
(integer) 0
查看set元素
127.0.0.1:6379> smembers set
1) "hello"
2) "world"
2 srem
刪除名稱為 key 的 set 中的元素 member
127.0.0.1:6379> smembers set
1) "hello"
2) "world"
127.0.0.1:6379> srem set world
(integer) 1
127.0.0.1:6379> smembers set
1) "hello"
3 spop
隨機(jī)返回并刪除名稱為 key 的 set 中一個(gè)元素
127.0.0.1:6379> smembers set
1) "three"
2) "zero"
3) "two"
4) "one"
5) "four"
127.0.0.1:6379> spop set
"zero"
127.0.0.1:6379> spop set
"three"
127.0.0.1:6379> smembers set
1) "four"
2) "one"
3) "two"
4 sdiff
回所有給定 key 與第一個(gè) key 的差集(第一個(gè))
127.0.0.1:6379> smembers set
1) "four"
2) "one"
3) "two"
127.0.0.1:6379> smembers set1
1) "three"
2) "two"
3) "one"
127.0.0.1:6379> sdiff set set1
1) "four"
127.0.0.1:6379> sdiff set1 set
1) "three"
5 sdiffstore
返回所有給定 key 與第一個(gè) key 的差集饵较,并將結(jié)果存為另一個(gè) key
127.0.0.1:6379> smembers set
1) "four"
2) "one"
3) "two"
127.0.0.1:6379> smembers set1
1) "three"
2) "two"
3) "one"
127.0.0.1:6379> sdiffstore set2 set set1
(integer) 1
127.0.0.1:6379> smembers set2
1) "four"
6 sinter
返回所有給定 key 的交集
127.0.0.1:6379> smembers set
1) "four"
2) "one"
3) "two"
127.0.0.1:6379> smembers set1
1) "three"
2) "two"
3) "one"
127.0.0.1:6379> sinter set set1
1) "two"
2) "one"
7 sinterstore
返回所有給定 key 的交集,并將結(jié)果存為另一個(gè) key
127.0.0.1:6379> smembers set
1) "four"
2) "one"
3) "two"
127.0.0.1:6379> smembers set1
1) "three"
2) "two"
3) "one"
127.0.0.1:6379> sinterstore set2 set set1
(integer) 2
127.0.0.1:6379> smembers set2
1) "one"
2) "two"
8 sunion
返回所有給定 key 的并集
127.0.0.1:6379> smembers set
1) "four"
2) "one"
3) "two"
127.0.0.1:6379> smembers set1
1) "three"
2) "two"
3) "one"
127.0.0.1:6379> sunion set set1
1) "two"
2) "one"
3) "four"
4) "three"
9 sunionstore
返回所有給定 key 的并集茄猫,并將結(jié)果存為另一個(gè) key
127.0.0.1:6379> smembers set
1) "four"
2) "one"
3) "two"
127.0.0.1:6379> smembers set1
1) "three"
2) "two"
3) "one"
127.0.0.1:6379> sunionstore set2 set set1
(integer) 4
127.0.0.1:6379> smembers set2
1) "two"
2) "one"
3) "four"
4) "three"
10 smove
從第一個(gè) key 對應(yīng)的 set 中移除 member 并添加到第二個(gè)對應(yīng) set 中
127.0.0.1:6379> smembers set
1) "four"
2) "one"
3) "two"
127.0.0.1:6379> smove set set2 one
(integer) 1
127.0.0.1:6379> smembers set2
1) "one"
11 scard
返回名稱為 key 的 set 的元素個(gè)數(shù)
127.0.0.1:6379> smembers set
1) "four"
2) "one"
3) "two"
127.0.0.1:6379> scard set
(integer) 3
12 sismember
測試 member 是否是名稱為 key 的 set 的元素
127.0.0.1:6379> smembers set
1) "four"
2) "one"
3) "two"
127.0.0.1:6379> scard set
(integer) 3
127.0.0.1:6379> sismember set one
(integer) 1
127.0.0.1:6379> sismember set three
(integer) 0
13 srandmember
隨機(jī)返回名稱為 key 的 set 的一個(gè)元素募疮,但是不刪除元素
127.0.0.1:6379> smembers set
1) "four"
2) "one"
3) "two"
127.0.0.1:6379> srandmember set
"one"