Set是集合,它是string類型的無序集合。set是經過hash table實現的,添加、刪除和查找的複雜度都是O(1)。blog
對集合咱們能夠取並集、交集、差集。經過這些操做咱們能夠實現SNS中的好友推薦和blog的tag功能。three
Set集合操做:rem
sadd:向名稱爲Key的set中添加元素,同一集合中不能出現相同的元素值。(用法:sadd set集合名稱 元素值)string
127.0.0.1:6379> sadd myset1 hellohash
(integer) 1io
127.0.0.1:6379> sadd myset1 worldtable
(integer) 1nio
127.0.0.1:6379> smembers myset1ember
1) "hello"數據
2) "world"
127.0.0.1:6379> sadd myset1 hello
(integer) 0
srem:刪除名稱爲key的set中的元素。(用法:srem set集合名稱 要刪除的元素值)
127.0.0.1:6379> smembers myset1
1) "hello"
2) "fine"
3) "world"
127.0.0.1:6379> srem myset1 fine
(integer) 1
127.0.0.1:6379> smembers myset1
1) "hello"
2) "world"
spop:隨機返回並刪除名稱爲key的set中一個元素。(用法:srem set集合名稱)
127.0.0.1:6379> smembers myset1
1) "hello"
2) "world"
127.0.0.1:6379> spop myset1
"hello"
127.0.0.1:6379> smembers myset1
1) "world"
sdiff:返回全部給定key與第一個key的差集。(用法:sdiff set集合1 set集合2)
127.0.0.1:6379> smembers myset2
1) "two"
2) "one"
127.0.0.1:6379> smembers myset3
1) "three"
2) "two"
127.0.0.1:6379> sdiff myset2 myset3
1) "one"
sdiffstore:返回全部給定key與第一個key的差集,並將結果存爲另外一個key。(用法:sdiffstore 差集數據存入的集合 set集合1 set集合2)
127.0.0.1:6379> smembers myset3
1) "one"
2) "two"
3) "four"
127.0.0.1:6379> smembers myset4
1) "two"
2) "one"
127.0.0.1:6379> sdiffstore myset5 myset3 myset4
(integer) 1
127.0.0.1:6379> smembers myset5
1) "four"
sinter:返回全部給定key的交集。(用法:sinter set集合1 set集合2)
127.0.0.1:6379> smembers myset3
1) "one"
2) "two"
3) "four"
127.0.0.1:6379> smembers myset4
1) "two"
2) "one"
127.0.0.1:6379> sinter myset3 myset4
1) "two"
2) "one"
sinterstore:返回全部給定Set集合的交集,並將結果存爲另外一個set集合。(用法:sinterstore 交集結果集合 set集合1 set集合2)
127.0.0.1:6379> smembers myset3
1) "one"
2) "two"
3) "four"
127.0.0.1:6379> smembers myset4
1) "two"
2) "one"
127.0.0.1:6379> sinterstore myset6 myset3 myset4
(integer) 2
127.0.0.1:6379> smembers myset6
1) "one"
2) "two"
sunion:返回全部給定key的並集。(用法:sunion set集合1 set集合2)
127.0.0.1:6379> smembers myset3
1) "one"
2) "two"
3) "four"
127.0.0.1:6379> smembers myset4
1) "two"
2) "one"
127.0.0.1:6379> sunion myset3 myset4
1) "two"
2) "one"
3) "four"
sunionstore:返回全部給定key的並集,並將結果存爲另外一個set集合。(用法:sunionstore 並集結果集合 set集合1 set集合2)
127.0.0.1:6379> smembers myset3
1) "one"
2) "two"
3) "four"
127.0.0.1:6379> smembers myset4
1) "two"
2) "one"
127.0.0.1:6379> sunionstore myset7 myset3 myset4
(integer) 3
127.0.0.1:6379> smembers myset7
1) "two"
2) "one"
3) "four"
smove:從第一個集合中移除一個元素到另外一個集合中。(用法:smove 集合1 集合2 要移除的元素值)
127.0.0.1:6379> smembers myset7
1) "two"
2) "one"
3) "four"
127.0.0.1:6379> smembers myset5
1) "four"
127.0.0.1:6379> smove myset7 myset5 one
(integer) 1
127.0.0.1:6379> smembers myset5
1) "one"
2) "four"
scard:返回名稱爲key的set集合的元素個數。(用法:scard 集合1)
127.0.0.1:6379> smembers myset5
1) "one"
2) "four"
127.0.0.1:6379> scard myset5
(integer) 2
sismember:判斷某個值是不是集合的元素。(用法:sismember 集合1 指定的元素值)
127.0.0.1:6379> smembers myset7
1) "two"
2) "four"
127.0.0.1:6379> sismember myset7 two
(integer) 1
127.0.0.1:6379> sismember myset7 five
(integer) 0
srandmember:隨機返回集合中的一個元素,但不刪除元素。(用法:srandmember 集合1)
127.0.0.1:6379> smembers myset31) "one"2) "two"3) "four"127.0.0.1:6379> srandmember myset3"four"127.0.0.1:6379> srandmember myset3"four"