Redis的集合类型(Set)

时间:2021-01-16 16:58:28


Redis的Set是string类型的无序集合。集合成员是唯一的,这就意味着集合中不能出现重复的数据。

Redis 中 集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是O(1)。

集合中最大的成员数为 2 32 - 1 (4294967295, 每个集合可存储40多亿个成员)。

 

本次演示set的基本操作

添加一个string元素到,key对应的set集合中,成功返回1,如果元素以及在集合中返回0,key对应的set不存在返回错误
127.0.0.1:6379> sadd test_set 222
(integer) 1

127.0.0.1:6379> sadd test_set 111
(integer) 1

127.0.0.1:6379> sadd test_set 333
(integer) 1

127.0.0.1:6379> sadd test_set 333
(integer) 0

返回集合中的所有成员
127.0.0.1:6379> smembers test_set
1) "111"
2) "222"
3) "333"

srandmember为返回集合中一个或多个随机数
127.0.0.1:6379> srandmember test_set 2
1) "333"
2) "111"

再添加一个set集合test_set2
127.0.0.1:6379> sadd test_set2 aaa
(integer) 1

127.0.0.1:6379> sadd test_set2 bbb
(integer) 1

127.0.0.1:6379> sadd test_set2 ccc
(integer) 1

sunion为返回所有给定集合的并集
127.0.0.1:6379> sunion test_set test_set2
1) "222"
2) "111"
3) "333"
4) "aaa"
5) "bbb"
6) "ccc"

 


Redis集合命令

SADD key member1 [member2] 向集合添加一个或多个成员

SCARD key 获取集合的成员数

SDIFF key1 [key2] 返回给定所有集合的差集

SDIFFSTORE destination key1 [key2] 返回给定所有集合的差集并存储在 destination 中

SINTER key1 [key2] 返回给定所有集合的交集

SINTERSTORE destination key1 [key2] 返回给定所有集合的交集并存储在 destination 中

SISMEMBER key member 判断 member 元素是否是集合 key 的成员

SMEMBERS key 返回集合中的所有成员

SMOVE source destination member 将 member 元素从 source 集合移动到destination 集合

SPOP key 移除并返回集合中的一个随机元素

SRANDMEMBER key [count] 返回集合中一个或多个随机数

SREM key member1 [member2] 移除集合中一个或多个成员

SUNION key1 [key2] 返回所有给定集合的并集

SUNIONSTORE destination key1 [key2] 所有给定集合的并集存储在destination 集合中

SSCAN key cursor [MATCH pattern] [COUNTcount] 迭代集合中的元素