redis基本操做 —— set

Redis 的 Set 是 String 類型的無序集合。集合成員是惟一的,這就意味着集合中不能出現重複的數據。html

Redis 中集合是經過哈希表實現的,因此添加,刪除,查找的複雜度都是 O(1)。redis

集合中最大的成員數爲 232 - 1 (4294967295, 每一個集合可存儲40多億個成員)。spa

 

1、向集合添加一個或多個成員code

  命令:saddhtm

  格式:sadd key member1 [member2]blog

127.0.0.1:6379> sadd set_key m1
(integer) 1
127.0.0.1:6379> sadd set_key m2 m3
(integer) 2

2、返回集合中的全部成員rem

  命令:smembers字符串

  格式:smembers keyget

127.0.0.1:6379> smembers set_key
1) "m3"
2) "m2"
3) "m1"

 3、移除並返回集合中的一個隨機元素string

  命令:spop

  格式:spop key

127.0.0.1:6379> sadd set_key m1 m2 m3 m4 m5 m6 m7 m8 m9
(integer) 9
127.0.0.1:6379> smembers set_key
1) "m8"
2) "m2"
3) "m3"
4) "m6"
5) "m1"
6) "m5"
7) "m4"
8) "m7"
9) "m9"
127.0.0.1:6379> spop set_key
"m5"
127.0.0.1:6379> smembers set_key
1) "m6"
2) "m1"
3) "m4"
4) "m7"
5) "m8"
6) "m3"
7) "m2"
8) "m9"

4、移除集合中一個或多個成員

  命令:srem

  格式:srem set_key member1 [member2]

127.0.0.1:6379> smembers set_key
1) "m6"
2) "m1"
3) "m4"
4) "m7"
5) "m8"
6) "m3"
7) "m2"
8) "m9"
127.0.0.1:6379> srem set_key m1 m2 m3
(integer) 3
127.0.0.1:6379> smembers set_key
1) "m8"
2) "m4"
3) "m6"
4) "m9"
5) "m7"
127.0.0.1:6379> srem set_key m1 m2 m3
(integer) 0
127.0.0.1:6379> smembers set_key
1) "m8"
2) "m4"
3) "m6"
4) "m9"
5) "m7"

5、判斷 member 元素是不是集合 key 的成員

  命令:sismember

  格式:sismember key member

127.0.0.1:6379> smembers set_key
1) "m8"
2) "m4"
3) "m6"
4) "m9"
5) "m7"
127.0.0.1:6379> sismember set_key m8
(integer) 1
127.0.0.1:6379> sismember set_key m1
(integer) 0

6、獲取集合的成員數

  命令:scard

  格式:scard key

127.0.0.1:6379> smembers set_key
1) "m8"
2) "m4"
3) "m6"
4) "m9"
5) "m7"
127.0.0.1:6379> scard set_key
(integer) 5

7、返回給定全部集合的差集

  命令:sdiff

  格式:sdiff key1 [key2] ...

127.0.0.1:6379> sadd k1 m1 m2 m3
(integer) 3
127.0.0.1:6379> sadd k2 m3 m4 m5
(integer) 3
127.0.0.1:6379> sdiff k1
1) "m2"
2) "m3"
3) "m1"
127.0.0.1:6379> sdiff k1 k2
1) "m2"
2) "m1"
127.0.0.1:6379> sdiff k1 k2
1) "m2"
2) "m1"
127.0.0.1:6379> sdiff k2 k1
1) "m4"
2) "m5"
127.0.0.1:6379> sadd k3 m5 m6 m7
(integer) 3
127.0.0.1:6379> sdiff k1 k2 k3
1) "m2"
2) "m1"
127.0.0.1:6379> sdiff k2 k1 k3
1) "m4"

8、返回給定全部集合的差集並存儲在 destination 中

  命令:sdiffstore

  格式:sdiffstore destination key1 [key2] ...

127.0.0.1:6379> sadd k1 m1 m2 m3
(integer) 3
127.0.0.1:6379> sadd k2 m3 m4 m5
(integer) 3
127.0.0.1:6379> sadd k3 m5 m6 m7
(integer) 3
127.0.0.1:6379> sdiffstore d1 k1 k2
(integer) 2
127.0.0.1:6379> smembers d1
1) "m2"
2) "m1"
127.0.0.1:6379> sdiffstore d2 k2 k1
(integer) 2
127.0.0.1:6379> smembers d2
1) "m4"
2) "m5"
127.0.0.1:6379> sdiff d1 k3
1) "m2"
2) "m1"
127.0.0.1:6379> sdiff k1 k2 k3
1) "m2"
2) "m1"
127.0.0.1:6379> sdiff d2 k3
1) "m4"
127.0.0.1:6379> sdiff k2 k1 k3
1) "m4"

9、返回給定全部集合的交集

  命令:sinter

  格式:sinter key1 [key2] ...

127.0.0.1:6379> sadd k1 m1 m2 m3
(integer) 3
127.0.0.1:6379> sadd k2 m2 m3 m4
(integer) 3
127.0.0.1:6379> sadd k3 m3 m4 m5
(integer) 3
127.0.0.1:6379> sinter k1 k2
1) "m3"
2) "m2"
127.0.0.1:6379> sinter k1 k2 k3
1) "m3"
127.0.0.1:6379> sinter k2 k1
1) "m3"
2) "m2"
127.0.0.1:6379> sinter k2 k1 k3
1) "m3"

10、返回給定全部集合的交集並存儲在 destination 中

  命令:sinterstore

  格式:sinterstore destination key1 [key2] ...

127.0.0.1:6379> sadd k1 m1 m2 m3
(integer) 3
127.0.0.1:6379> sadd k2 m2 m3 m4
(integer) 3
127.0.0.1:6379> sadd k3 m3 m4 m5
(integer) 3
127.0.0.1:6379> sinter k1 k2
1) "m3"
2) "m2"
127.0.0.1:6379> sinter k1 k2 k3
1) "m3"
127.0.0.1:6379> sinter k2 k1
1) "m3"
2) "m2"
127.0.0.1:6379> sinter k2 k1 k3
1) "m3"
127.0.0.1:6379> sinterstore d1 k1 k2
(integer) 2
127.0.0.1:6379> smembers d1
1) "m2"
2) "m3"
127.0.0.1:6379> sinterstore d2 k1 k2 k3
(integer) 1
127.0.0.1:6379> smembers d2
1) "m3"

11、將 member 元素從 source 集合移動到 destination 集合

  命令:smove

  格式:smove src des members

127.0.0.1:6379> sadd src m1 m2 m3
(integer) 3
127.0.0.1:6379> sadd des m4 m5 m6
(integer) 3
127.0.0.1:6379> smembers src
1) "m3"
2) "m2"
3) "m1"
127.0.0.1:6379> smembers des
1) "m4"
2) "m6"
3) "m5"
127.0.0.1:6379> smove src des m1
(integer) 1
127.0.0.1:6379> smembers src
1) "m3"
2) "m2"
127.0.0.1:6379> smembers des
1) "m4"
2) "m6"
3) "m1"
4) "m5"
127.0.0.1:6379> smove src des m0
(integer) 0
127.0.0.1:6379> smembers src
1) "m3"
2) "m2"
127.0.0.1:6379> smembers des
1) "m4"
2) "m6"
3) "m1"
4) "m5"

12、返回集合中一個或多個隨機數

  命令:srandmember

  格式:srandmember key [count]

127.0.0.1:6379> sadd rand_set m1 m2 m3 m4 m5 m6 m7 m8
(integer) 8
127.0.0.1:6379> smembers rand_set
1) "m8"
2) "m2"
3) "m3"
4) "m6"
5) "m1"
6) "m5"
7) "m4"
8) "m7"
127.0.0.1:6379> srandmember rand_set
"m8"
127.0.0.1:6379> srandmember rand_set 
"m6"
127.0.0.1:6379> srandmember rand_set 3
1) "m8"
2) "m5"
3) "m7"

十3、返回全部給定集合的並集

  命令:sunion

  格式:sunion key1 [key2] ...

127.0.0.1:6379> sadd k1 m1 m2
(integer) 2
127.0.0.1:6379> sadd k2 m3 m4
(integer) 2
127.0.0.1:6379> sadd k3 m1 m3 m5 m6
(integer) 4
127.0.0.1:6379> sunion k1 k2
1) "m4"
2) "m3"
3) "m2"
4) "m1"
127.0.0.1:6379> sunion k1 k3
1) "m6"
2) "m1"
3) "m2"
4) "m3"
5) "m5"
127.0.0.1:6379> sunion k1 k2 k3
1) "m2"
2) "m3"
3) "m6"
4) "m1"
5) "m5"
6) "m4"

十4、全部給定集合的並集存儲在 destination 集合中

  命令:sunionstore

  格式:sunionstore destination key1 [key2] ...

127.0.0.1:6379> sadd k1 m1 m2
(integer) 2
127.0.0.1:6379> sadd k2 m3 m4
(integer) 2
127.0.0.1:6379> sadd k3 m1 m3 m5 m6
(integer) 4
127.0.0.1:6379> sunion k1 k2
1) "m4"
2) "m3"
3) "m2"
4) "m1"
127.0.0.1:6379> sunion k1 k3
1) "m6"
2) "m1"
3) "m2"
4) "m3"
5) "m5"
127.0.0.1:6379> sunion k1 k2 k3
1) "m2"
2) "m3"
3) "m6"
4) "m1"
5) "m5"
6) "m4"
127.0.0.1:6379> sunionstore d1 k1 k2
(integer) 4
127.0.0.1:6379> smembers d1
1) "m4"
2) "m3"
3) "m2"
4) "m1"
127.0.0.1:6379> sunionstore d2 k1 k2 k3
(integer) 6
127.0.0.1:6379> smembers d2
1) "m2"
2) "m3"
3) "m6"
4) "m1"
5) "m5"
6) "m4"

十5、迭代集合中的元素

  命令:sscan

  格式:sscan key cursor [MATCH pattern] [COUNT count] 

127.0.0.1:6379> sadd set_key m1 m2 m3 member1 member2 member3
(integer) 6
127.0.0.1:6379> sscan set_key 0
1) "0"
2) 1) "member1"
   2) "member3"
   3) "m2"
   4) "m3"
   5) "member2"
   6) "m1"
127.0.0.1:6379> sscan set_key 0 MATCH m*
1) "0"
2) 1) "member1"
   2) "member3"
   3) "m2"
   4) "m3"
   5) "member2"
   6) "m1"
127.0.0.1:6379> sscan set_key 0 MATCH me*
1) "0"
2) 1) "member1"
   2) "member3"
   3) "member2"
127.0.0.1:6379> sscan set_key 0 MATCH me* COUNT 1
1) "1"
2) 1) "member1"
   2) "member3"
127.0.0.1:6379> sscan set_key 0 MATCH me* COUNT 0
(error) ERR syntax error
127.0.0.1:6379> sscan set_key 0 MATCH me* COUNT 3
1) "3"
2) 1) "member1"
   2) "member3"
   3) "member2"

 

參考連接:https://www.runoob.com/redis/redis-strings.html

相關文章
相關標籤/搜索