备注:测试版本 redis 4.0.9
文章目录
集合(Set)命令概述
Redis的Set是string类型的无序集合。集合成员是唯一的,这就意味着集合中不能出现重复的数据。
Redis 中 集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是O(1)。
集合中最大的成员数为 232 - 1 (4294967295, 每个集合可存储40多亿个成员)。
命令 | 概述 |
---|---|
Sadd | 向集合添加一个或多个成员 |
Scard | 获取集合的成员数 |
Sdiff | 返回给定所有集合的差集 |
Sdiffstore | 返回给定所有集合的差集并存储在 destination 中 |
Sinter | 返回给定所有集合的交集 |
Sinterstore | 返回给定所有集合的交集并存储在 destination 中 |
Sismember | 判断 member 元素是否是集合 key 的成员 |
Smembers | 返回集合中的所有成员 |
Smove | 将 member 元素从 source 集合移动到 destination 集合 |
Spop | 移除并返回集合中的一个随机元素 |
Srandmember | 返回集合中一个或多个随机数 |
Srem | 移除集合中一个或多个成员 |
Sunion | 返回所有给定集合的并集 |
Sunionstore | 所有给定集合的并集存储在 destination 集合中 |
Sscan | 迭代集合中的元素 |
1.1 SADD命令
语法:
SADD key member1 [member2] 向集合添加一个或多个成员
测试记录:
-- 返回值是添加元素的个数 重复的元素不会被重复添加,这点与list有区别
127.0.0.1:6379> sadd my_db Oracle
(integer) 1
127.0.0.1:6379> sadd my_db MySQL
(integer) 1
127.0.0.1:6379> sadd my_db Redis
(integer) 1
127.0.0.1:6379> sadd my_db Oracle
(integer) 0
127.0.0.1:6379> smembers my_db
1) "Redis"
2) "MySQL"
3) "Oracle"
127.0.0.1:6379>
1.2 SCARD命令
语法:
SCARD key 获取集合的成员数
测试记录
127.0.0.1:6379> del key my_db
(integer) 1
127.0.0.1:6379> sadd my_db Oracle
(integer) 1
127.0.0.1:6379> sadd my_db MySQL
(integer) 1
127.0.0.1:6379> sadd my_db Redis
(integer) 1
127.0.0.1:6379> scard my_db
(integer) 3
127.0.0.1:6379>
1.3 SDIFF命令
语法:
SDIFF key1 [key2] 返回给定所有集合的差集
测试记录:
127.0.0.1:6379> del key my_db
(integer) 1
127.0.0.1:6379> sadd my_db Oracle
(integer) 1
127.0.0.1:6379> sadd my_db MySQL
(integer) 1
127.0.0.1:6379> sadd my_db Redis
(integer) 1
127.0.0.1:6379>
127.0.0.1:6379> sadd my_db2 Redis
(integer) 1
127.0.0.1:6379> sadd my_db2 MongoDB
(integer) 1
127.0.0.1:6379>
127.0.0.1:6379> sdiff my_db my_db2
1) "MySQL"
2) "Oracle"
127.0.0.1:6379>
1.4 SDIFFSTORE命令
语法:
SDIFFSTORE destination key1 [key2] 返回给定所有集合的差集并存储在 destination 中
测试记录
127.0.0.1:6379> del key my_db
(integer) 1
127.0.0.1:6379> del key my_db2
(integer) 1
127.0.0.1:6379>
127.0.0.1:6379>
127.0.0.1:6379> sadd my_db Oracle
(integer) 1
127.0.0.1:6379> sadd my_db MySQL
(integer) 1
127.0.0.1:6379> sadd my_db Redis
(integer) 1
127.0.0.1:6379> sadd my_db2 Redis
(integer) 1
127.0.0.1:6379> sadd my_db2 MondbDB
(integer) 1
127.0.0.1:6379>
127.0.0.1:6379> sdiffstore my_db3 my_db my_db2
(integer) 2
127.0.0.1:6379> smembers my_db3
1) "MySQL"
2) "Oracle"
127.0.0.1:6379>
1.5 SINTER命令
语法:
SINTER key1 [key2] 返回给定所有集合的交集
测试记录
127.0.0.1:6379> del key my_db
(integer) 1
127.0.0.1:6379> del key my_db2
(integer) 1
127.0.0.1:6379>
127.0.0.1:6379>
127.0.0.1:6379> sadd my_db Oracle
(integer) 1
127.0.0.1:6379> sadd my_db MySQL
(integer) 1
127.0.0.1:6379> sadd my_db Redis
(integer) 1
127.0.0.1:6379> sadd my_db2 Redis
(integer) 1
127.0.0.1:6379> sadd my_db2 MondbDB
(integer) 1
127.0.0.1:6379>
127.0.0.1:6379>
127.0.0.1:6379> sinter my_db my_db2
1) "Redis"
127.0.0.1:6379>
1.6 SINTERSTORE 命令
语法:
SINTERSTORE destination key1 [key2] 返回给定所有集合的交集并存储在 destination 中
测试记录
127.0.0.1:6379> del key my_db
(integer) 1
127.0.0.1:6379> del key my_db2
(integer) 1
127.0.0.1:6379>
127.0.0.1:6379>
127.0.0.1:6379> sadd my_db Oracle
(integer) 1
127.0.0.1:6379> sadd my_db MySQL
(integer) 1
127.0.0.1:6379> sadd my_db Redis
(integer) 1
127.0.0.1:6379> sadd my_db2 Redis
(integer) 1
127.0.0.1:6379> sadd my_db2 MondbDB
(integer) 1
127.0.0.1:6379>
127.0.0.1:6379>
127.0.0.1:6379> del key my_db
(integer) 1
127.0.0.1:6379> del key my_db2
(integer) 1
127.0.0.1:6379>
127.0.0.1:6379>
127.0.0.1:6379> sadd my_db Oracle
(integer) 1
127.0.0.1:6379> sadd my_db MySQL
(integer) 1
127.0.0.1:6379> sadd my_db Redis
(integer) 1
127.0.0.1:6379> sadd my_db2 Redis
(integer) 1
127.0.0.1:6379> sadd my_db2 MondbDB
(integer) 1
127.0.0.1:6379>
127.0.0.1:6379>
127.0.0.1:6379> sinter my_db my_db2
1) "Redis"
127.0.0.1:6379>
1.7 SISMEMBER命令
语法:
SISMEMBER key member 判断 member 元素是否是集合 key 的成员
测试记录
127.0.0.1:6379> del key my_db
(integer) 1
127.0.0.1:6379> sadd my_db Oracle
(integer) 1
127.0.0.1:6379> sadd my_db MySQL
(integer) 1
127.0.0.1:6379> sadd my_db Redis
(integer) 1
127.0.0.1:6379> sismember my_db Oracle
(integer) 1
127.0.0.1:6379> sismember my_db MongoDB
(integer) 0
1.8 SMEMBERS命令
语法:
SMEMBERS key 返回集合中的所有成员
测试记录
127.0.0.1:6379> del key my_db
(integer) 1
127.0.0.1:6379> sadd my_db Oracle
(integer) 1
127.0.0.1:6379> sadd my_db MySQL
(integer) 1
127.0.0.1:6379> sadd my_db Redis
(integer) 1
127.0.0.1:6379>
127.0.0.1:6379>
127.0.0.1:6379> smembers my_db
1) "Redis"
2) "MySQL"
3) "Oracle"
127.0.0.1:6379>
1.9 SMOVE命令
语法:
SMOVE source destination member 将 member 元素从 source 集合移动到 destination 集合
测试记录
127.0.0.1:6379> del key my_db
(integer) 1
127.0.0.1:6379> del key my_db2
(integer) 1
127.0.0.1:6379> sadd my_db Oracle
(integer) 1
127.0.0.1:6379> sadd my_db MySQL
(integer) 1
127.0.0.1:6379> sadd my_db Redis
(integer) 1
127.0.0.1:6379> smove my_db my_db2 Oracle
(integer) 1
127.0.0.1:6379> smembers my_db
1) "Redis"
2) "MySQL"
127.0.0.1:6379> smembers my_db2
1) "Oracle"
127.0.0.1:6379>
1.10 SPOP命令
语法:
SPOP key 移除并返回集合中的一个随机元素
测试记录
127.0.0.1:6379> del my_db
(integer) 1
127.0.0.1:6379> sadd my_db Oracle
(integer) 1
127.0.0.1:6379> sadd my_db MySQL
(integer) 1
127.0.0.1:6379> sadd my_db Redis
(integer) 1
127.0.0.1:6379> smembers my_db
1) "Redis"
2) "MySQL"
3) "Oracle"
127.0.0.1:6379> spop my_db
"Oracle"
127.0.0.1:6379> smembers my_db
1) "Redis"
2) "MySQL"
127.0.0.1:6379>
1.11 SRANDMEMBER命令
语法:
SRANDMEMBER key [count] 返回集合中一个或多个随机数
测试记录
127.0.0.1:6379> del key my_db
(integer) 1
127.0.0.1:6379> sadd my_db Oracle
(integer) 1
127.0.0.1:6379> sadd my_db MySQL
(integer) 1
127.0.0.1:6379> sadd my_db Redis
(integer) 1
127.0.0.1:6379> srandmember my_db
"MySQL"
127.0.0.1:6379> srandmember my_db 2
1) "MySQL"
2) "Oracle"
127.0.0.1:6379> srandmember my_db 4
1) "Redis"
2) "MySQL"
3) "Oracle"
127.0.0.1:6379>
1.12 SREM命令
语法:
SREM key member1 [member2] 移除集合中一个或多个成员
测试记录
127.0.0.1:6379> del key my_db
(integer) 1
127.0.0.1:6379> sadd my_db Oracle
(integer) 1
127.0.0.1:6379> sadd my_db MySQL
(integer) 1
127.0.0.1:6379> sadd my_db Redis
(integer) 1
127.0.0.1:6379> srem my_db Oracle
(integer) 1
127.0.0.1:6379> srem my_db Oracle Redis
(integer) 1
127.0.0.1:6379>
1.13 SUNION命令
语法:
SUNION key1 [key2] 返回所有给定集合的并集
测试记录
127.0.0.1:6379> del key my_db
(integer) 1
127.0.0.1:6379> del key my_db2
(integer) 0
127.0.0.1:6379> sadd my_db Oracle
(integer) 1
127.0.0.1:6379> sadd my_db MySQL
(integer) 1
127.0.0.1:6379> sadd my_db Redis
(integer) 1
127.0.0.1:6379> sadd my_db2 Redis
(integer) 1
127.0.0.1:6379> sadd my_db2 MongoDB
(integer) 1
127.0.0.1:6379> sunion my_db my_db2
1) "Redis"
2) "MySQL"
3) "MongoDB"
4) "Oracle"
127.0.0.1:6379>
1.14 SUNIONSTORE命令
语法:
SUNIONSTORE destination key1 [key2] 所有给定集合的并集存储在 destination 集合中
测试记录
127.0.0.1:6379> del key my_db
(integer) 1
127.0.0.1:6379> del key my_db2
(integer) 0
127.0.0.1:6379> sadd my_db Oracle
(integer) 1
127.0.0.1:6379> sadd my_db MySQL
(integer) 1
127.0.0.1:6379> sadd my_db Redis
(integer) 1
127.0.0.1:6379> sadd my_db2 Redis
(integer) 1
127.0.0.1:6379> sadd my_db2 MongoDB
(integer) 1
127.0.0.1:6379> sunionstore my_db3 my_db my_db2
(integer) 4
127.0.0.1:6379> smembers my_db3
1) "Redis"
2) "MySQL"
3) "MongoDB"
4) "Oracle"
127.0.0.1:6379>
1.15 SSCAN命令
语法:
SSCAN key cursor [MATCH pattern] [COUNT count] 迭代集合中的元素
测试记录
127.0.0.1:6379> del key my_db
(integer) 1
127.0.0.1:6379> del key my_db2
(integer) 1
127.0.0.1:6379> sadd my_db Oracle
(integer) 1
127.0.0.1:6379> sadd my_db MySQL
(integer) 1
127.0.0.1:6379> sadd my_db Redis
(integer) 1
127.0.0.1:6379> sadd my_db2 Redis
(integer) 1
127.0.0.1:6379> sadd my_db2 MongoDB
(integer) 1
127.0.0.1:6379> sscan my_db 0 match O*
1) "0"
2) 1) "Oracle"
127.0.0.1:6379> sscan my_db2 0 match O*
1) "0"
2) (empty list or set)
127.0.0.1:6379>