详谈redis命令之集合(SET)
一、前言
集合在我的第一篇blog《详谈redis数据结构》中也大略讲过,集合是一群无序不重复的元素聚集。注意这里的无序和不重复。如果不太明白可以回头去读《详谈redis数据结构》,如果对Java不熟悉可以去文章末尾的公众号里读Java系列技术文章。
二、命令
2.1 SADD
SADD全称SET ADD
往一个集合内添加一个或多个成员,并返回本次添加成员的数量
System.out.println(conn.sadd("name","Kelvin","Oscar","Lina"));
打开redis desktop manager查看集合内的元素
已添加成功。
2.2 SREM
SREM 全称SET REM
从集合里面移除一个或多个元素,并返回被移除元素的数量
我们将刚刚的name集合中的“Kelvin”移除掉
System.out.println(conn.srem("name","Kelvin"));
移除一位应当返回1
查看redis中存储的数据
"Kelvin"已经被移除。
2.3 SISMEMBER
SISMEMBER全称Set is member
检查元素是否存在于集合内
刚刚的集合中还有“Lina”但已经没了"Kelvin"写行代码检查一下吧
System.out.println(conn.sismember("name","Kelvin"));
System.out.println(conn.sismember("name","Lina"));
检查结果显示“Kelvin”不是“name”的成员,“Lina”是“name”的成员。
2.4 SCARD
SCARD全称SET CARD
返回集合内包含的元素数量
刚刚的“name”集合内还有两个元素。
System.out.println(conn.scard("name"));
返回2,符合预期。
2.5 SMEMBERS
SMEMBERS全称set members
返回集合包含的所有元素
刚刚的“name”里面还有“Lina”和"Oscar"
System.out.println(conn.smembers("name"));
2.6 SRANDMMBER
SRANDMMBER全称set random member
从集合里面随机返回一个或多个元素,当传入的数量参数为正,则返回的随机元素不会重复,当传入的数量参数为负时,返回的随机元素可能会出现重复。
//不传入元素数量时,默认返回一个元素
System.out.println(conn.srandmember("name"));
//正数,则返回元素不会重复
System.out.println(conn.srandmember("name",2));
//负数,则返回元素可能重复
System.out.println(conn.srandmember("name",-2));
现在我们将上面的这段代码多运行几次
最后一次没重复了。说明重复是可能性不是必然性。
2.7 SPOP
SPOP全称set pop
随机地移除集合中的一个或多个元素,并返回被移除的元素
先将之前的“name”集合全部抹掉,然后再重新往“name”里面添加元素
System.out.println(conn.sadd("name","Lina","Oscar","Kelvin","Trump","Obama","Mary"));
System.out.println(conn.smembers("name"));
System.out.println(conn.spop("name",2));
System.out.println(conn.smembers("name"));
2.8 SMOVE
SMOVE全称SET MOVE
从"name"中移除"Kelvin”,并将“Kelvin”存到“dest-key”集合中。如果移除成功,则命令返回1,否则返回0.
System.out.println(conn.smembers("name"));
System.out.println(conn.smove("name","dest-key","Kelvin"));
System.out.println(conn.smembers("name"));
System.out.println(conn.smembers("dest-key"));
2.9 SDIFF(差集)
SDIFF全称set different
返回那些存在于第一个集合却不存在于其他集合的元素
System.out.println(conn.sadd("set-key1","111","222","333","444","555"));
System.out.println(conn.sadd("set-key2","111","aaa","bbb"));
System.out.println(conn.smembers("set-key1"));
System.out.println(conn.smembers("set-key2"));
System.out.println(conn.sdiff("set-key1","set-key2"));
2.10 SDIFFSTORE
SDIFFSTORE全称set different store,将存在于第一个集合但并不存在于其他集合中的元素存储到dest-key中
System.out.println(conn.sadd("set-key1","111","222","333","444","555"));
System.out.println(conn.sadd("set-key2","111","aaa","bbb"));
System.out.println(conn.smembers("set-key1"));
System.out.println(conn.smembers("set-key2"));
System.out.println(conn.sdiffstore("dest-key","set-key1","set-key2"));
System.out.println(conn.smembers("dest-key"));
2.11 SINTER(交集)
SINTER全称set inter
返回那些同时存在于所有集合中的元素
System.out.println(conn.sadd("set-key1","111","222","333","444","555"));
System.out.println(conn.sadd("set-key2","111","aaa","bbb"));
System.out.println(conn.smembers("set-key1"));
System.out.println(conn.smembers("set-key2"));
System.out.println(conn.sinter("set-key1","set-key2"));
2.12 SINTERSTORE
SINTERSTORE全称set inter store
将那些同时存在于所有集合的元素存储到dest-key键里面
先将redis清空,然后执行以下操作
System.out.println(conn.sadd("set-key1","111","222","333","444","555"));
System.out.println(conn.sadd("set-key2","111","aaa","bbb"));
System.out.println(conn.smembers("set-key1"));
System.out.println(conn.smembers("set-key2"));
System.out.println(conn.sinterstore("dest-key","set-key1","set-key2"));
System.out.println(conn.smembers("dest-key"));
2.13 SUNION
SUNION全称set union
返回那些至少存在于一个集合中的元素
System.out.println(conn.sadd("set-key1","111","222","333","444","555"));
System.out.println(conn.sadd("set-key2","111","aaa","bbb"));
System.out.println(conn.smembers("set-key1"));
System.out.println(conn.smembers("set-key2"));
System.out.println(conn.sunion("set-key1","set-key2"));
2.14 SUNIONSTORE
SUNIONSTORE全称set union store
将那些至少存在于一个集合中的元素存储到dest-key里面
System.out.println(conn.sadd("set-key1","111","222","333","444","555"));
System.out.println(conn.sadd("set-key2","111","aaa","bbb"));
System.out.println(conn.smembers("set-key1"));
System.out.println(conn.smembers("set-key2"));
System.out.println(conn.sunionstore("dest-key","set-key1","set-key2"));
System.out.println(conn.smembers("dest-key"));
总结
以上14条命令充分显示出了redis的强大和灵活性,并集交集差集的运算使得redis可以在实际开发中充分运用。
对Java系列知识感兴趣的朋友可以加入QQ群
慧梦软件开发技术联盟:952317701
更多系列文章在java高级程序开发微信公众号
详谈redis命令之集合(SET)相关推荐
- 详谈redis命令之列表(List)
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/qq_41969845/article/ ...
- Redis命令之集合(无序)
常用集合命令 命令 用例与描述 SADD SADD key-name item [item-] 将一个或多个元素添加到集合里面,并返回被添加集合中原本并不存在的元素的数量 SREM SREM key- ...
- Redis命令之集合
文章目录 1. sadd 2. srem 3. smove 3. smembers 4. scard 5. sismember 6. srandmember 7. spop 8. sinter/sin ...
- Redis 命令--Redis有序集合(sorted set)
Redis有序集合(sorted set) Redis 有序集合和集合一样也是string类型元素的集合,且不允许重复的成员. 不同的是每个元素都会关联一个double类型的分数.redis正是通过分 ...
- Redis 基础 -- 有序集合 SortedSet类型 和 SortedSet类型的常用命令
文章目录 1. 有序集合(SortedSet) 1.1 ZADD:添加或更新成员 1.1.1 更新已有成员的分值 1.1.2 指定要执行的操作 1.1.3 返回被修改成员的数量 1.1.4 时间复杂度 ...
- Redis 命令整理
Redis 命令整理 一.从大而全的方向看,完整的命令查看文档地址: http://doc.redisfans.com/ 二.Redis 键(key) 常用 案例 三.Redis 字符串(Stri ...
- python 操作redis之——有序集合(sorted set) (七)
#coding:utf8 import redis r =redis.Redis(host="23.226.74.190",port=63279,password="66 ...
- Redis 命令参考
Redis 命令参考 本文档是 Redis Command Reference 和 Redis Documentation 的中文翻译版, 阅读这个文档可以帮助你了解 Redis 命令的具体使用方法, ...
- Redis-学习笔记02【Redis命令操作】
Java后端 学习路线 笔记汇总表[黑马程序员] Redis-学习笔记01[Redis环境搭建] Redis-学习笔记02[Redis命令操作] Redis-学习笔记03[Redis持久化] Redi ...
最新文章
- BZOJ2127happiness——最小割
- springboot中如何添加第三方的jar包或者说如何配置本地jar
- 【初阶】unity3d官方案例_太空射击SpacingShooter 学习笔记 显示分数时,如何让函数之间相互交流...
- JavaSE入门学习51:多线程编程(二)
- 如何循序渐进有效学习 JavaScript?
- T-GANs:基于“图灵测试”的生成对抗模型
- JavaScript逻辑运算符的使用技巧
- 为什么说人工智能是一个大谎言
- JSP---网页日历
- 51 Nod 阶乘后面0的数量
- C++---STL中迭代器失效的总结
- 支持中国西安申办ICCV2025,见证计算机视觉蓬勃发展的20年| Vote for ICCV2025 Xi'an China...
- 【书法字识别】基于matlab余弦形状相似度书法字识别【含Matlab源码 1356期】
- 一切皆是映射:浅谈操作系统内核的缺页异常(Page Fault)
- ADB Interface 找不到驱动程序
- springboot整合分布式任务调度 elastic-job
- 跨专业考研应该怎么做?
- BDW01手把手系列01:BDW01开发板基于TencentOS Tiny之helloworld!
- 第一章 计算机基础知识【信息学奥赛】
- 第二十次ScrumMeeting博客