备注:测试版本 redis 4.0.9
Table of Contents
- 集合(Set)命令概述
- 1.1 SADD命令
- 1.2 SCARD命令
- 1.3 SDIFF命令
- 1.4 SDIFFSTORE命令
- 1.5 SINTER命令
- 1.6 SINTERSTORE 命令
- 1.7 SISMEMBER命令
- 1.8 SMEMBERS命令
- 1.9 SMOVE命令
- 1.10 SPOP命令
- 1.11 SRANDMEMBER命令
- 1.12 SREM命令
- 1.13 SUNION命令
- 1.14 SUNIONSTORE命令
- 1.15 SSCAN命令
- 参考
集合(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>
复制
参考
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。
文章被以下合辑收录
评论
相关阅读
Redis概要
听溪
51次阅读
2025-04-11 10:23:10
Redis 挂 AGPLv3 “战袍”,开源江湖风云突变
青年数据库学习互助会
49次阅读
2025-05-08 10:04:49
Redis改协议内幕曝光!核心开发者亲述被“踢出局”,外部贡献者几乎全跑光了!
老鱼笔记
46次阅读
2025-04-17 10:41:56
Redis数据库——Cluster集群模式
编程Cookbook
46次阅读
2025-04-16 15:34:44
安装与配置Redis
鲁鲁
44次阅读
2025-04-11 10:26:10
使用Jedis访问Redis数据库
怀念和想念
40次阅读
2025-04-11 15:08:30
Redis geo 实战:“附近的人”实现,打造社交的新维度
老王两点中
38次阅读
2025-04-11 09:02:30
Redis提供的持久化机制
luyingjun
29次阅读
2025-04-11 15:11:05
亚马逊:MemoryDB,一款内存优先的云数据库
数据库应用创新实验室
28次阅读
2025-04-18 09:54:15
优雅遍历和删除特定开头的key
陌殇流苏
24次阅读
2025-04-25 12:17:03