redis中set集合类型常用命令
redis中set集合类型常用命令
Redis set对外提供的功能与list类似是一个列表的功能,特殊之处在于set是可以自动去重的,当你需要存储一个列表数据,又不希望出现重复数据时,set是一个很好的选择,并且set提供了判断某个成员是否在一个set集合内的重要接口,这个也是list所不能提供的
Redis的Set是string类型的无序集合,它底层其实是一个value为null的hash表,所以添加,删除,查找的复杂度都是O(1)
下面介绍一些Set类型的常用命令
- 新增键值对(如果key已存在则在对应set中新增value):sadd key value1 value2 value3......,eg:
127.0.0.1:6379> sadd key1 value1 value2 value3
(integer) 3
- 查询key对应set中所有value:smembers key,eg:
127.0.0.1:6379> smembers key1
1) "value2"
2) "value3"
3) "value1"
- 判断指定key对应set中是否包含指定value(是返回1,否返回0):sismember key value,eg:
127.0.0.1:6379> smembers key1
1) "value2"
2) "value3"
3) "value1"
127.0.0.1:6379> sismember key1 value1
(integer) 1
127.0.0.1:6379> sismember key1 value5
(integer) 0
- 查询指定key对应set中的元素个数:scard key,eg:
127.0.0.1:6379> smembers key1
1) "value2"
2) "value3"
3) "value1"
127.0.0.1:6379> scard key1
(integer) 3
- 删除指定key对应set中指定value:srem key value1 value2......,eg:
127.0.0.1:6379> smembers key1
1) "value2"
2) "value3"
3) "value1"
127.0.0.1:6379> srem key1 value1
(integer) 1
127.0.0.1:6379> smembers key1
1) "value2"
2) "value3"
- 随机删除指定key对应set中的n个元素(不指定n则默认删除一个):spop key n,eg:
127.0.0.1:6379> smembers key1
1) "value2"
2) "value3"
127.0.0.1:6379> spop key1 2
1) "value2"
2) "value3"
127.0.0.1:6379> smembers key1
(empty array)
- 随机获取指定key对应set中的n个元素(不指定n则默认获取一个):srandmember key n,eg:
127.0.0.1:6379> smembers key1
1) "value2"
2) "value3"
3) "value1"
127.0.0.1:6379> srandmember key1 2
1) "value2"
2) "value3"
127.0.0.1:6379> srandmember key1 2
1) "value2"
2) "value1"
127.0.0.1:6379> smembers key1
1) "value2"
2) "value3"
3) "value1"
- 将指定key1对应set中的指定元素value移动到另一个key2对应的set中:smove key1 key2 value,eg:
127.0.0.1:6379> smembers key1
1) "value2"
2) "value3"
3) "value1"
127.0.0.1:6379> smembers key2
1) "k2v1"
127.0.0.1:6379> smove key1 key2 value1
(integer) 1
127.0.0.1:6379> smembers key1
1) "value2"
2) "value3"
127.0.0.1:6379> smembers key2
1) "k2v1"
2) "value1"
- 查询指定key1对应set和key2对应set的差集:sdiff key1 key2......,eg:
127.0.0.1:6379> smembers key1
1) "value2"
2) "value3"
127.0.0.1:6379> smembers key2
1) "k2v1"
2) "value3"
3) "value1"
127.0.0.1:6379> sdiff key1 key2
1) "value2"
- 查询指定key1对应set和key2对应set的交集:sinter key1 key2......,eg:
127.0.0.1:6379> smembers key1
1) "value2"
2) "value3"
127.0.0.1:6379> smembers key2
1) "k2v1"
2) "value3"
3) "value1"
127.0.0.1:6379> sinter key1 key2
1) "value3"
- 查询指定key1对应set和key2对应set的并集:sunion key1 key2......,eg:
127.0.0.1:6379> smembers key1
1) "value2"
2) "value3"
127.0.0.1:6379> smembers key2
1) "k2v1"
2) "value3"
3) "value1"
127.0.0.1:6379> sunion key1 key2
1) "k2v1"
2) "value2"
3) "value3"
4) "value1"
记得快乐
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南