一、前言

集合在我的第一篇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)相关推荐

  1. 详谈redis命令之列表(List)

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/qq_41969845/article/ ...

  2. Redis命令之集合(无序)

    常用集合命令 命令 用例与描述 SADD SADD key-name item [item-] 将一个或多个元素添加到集合里面,并返回被添加集合中原本并不存在的元素的数量 SREM SREM key- ...

  3. Redis命令之集合

    文章目录 1. sadd 2. srem 3. smove 3. smembers 4. scard 5. sismember 6. srandmember 7. spop 8. sinter/sin ...

  4. Redis 命令--Redis有序集合(sorted set)

    Redis有序集合(sorted set) Redis 有序集合和集合一样也是string类型元素的集合,且不允许重复的成员. 不同的是每个元素都会关联一个double类型的分数.redis正是通过分 ...

  5. Redis 基础 -- 有序集合 SortedSet类型 和 SortedSet类型的常用命令

    文章目录 1. 有序集合(SortedSet) 1.1 ZADD:添加或更新成员 1.1.1 更新已有成员的分值 1.1.2 指定要执行的操作 1.1.3 返回被修改成员的数量 1.1.4 时间复杂度 ...

  6. Redis 命令整理

    Redis 命令整理 一.从大而全的方向看,完整的命令查看文档地址: http://doc.redisfans.com/ 二.Redis 键(key)   常用 案例 三.Redis 字符串(Stri ...

  7. python 操作redis之——有序集合(sorted set) (七)

    #coding:utf8 import redis r =redis.Redis(host="23.226.74.190",port=63279,password="66 ...

  8. Redis 命令参考

    Redis 命令参考 本文档是 Redis Command Reference 和 Redis Documentation 的中文翻译版, 阅读这个文档可以帮助你了解 Redis 命令的具体使用方法, ...

  9. Redis-学习笔记02【Redis命令操作】

    Java后端 学习路线 笔记汇总表[黑马程序员] Redis-学习笔记01[Redis环境搭建] Redis-学习笔记02[Redis命令操作] Redis-学习笔记03[Redis持久化] Redi ...

最新文章

  1. BZOJ2127happiness——最小割
  2. springboot中如何添加第三方的jar包或者说如何配置本地jar
  3. 【初阶】unity3d官方案例_太空射击SpacingShooter 学习笔记 显示分数时,如何让函数之间相互交流...
  4. JavaSE入门学习51:多线程编程(二)
  5. 如何循序渐进有效学习 JavaScript?
  6. T-GANs:基于“图灵测试”的生成对抗模型
  7. JavaScript逻辑运算符的使用技巧
  8. 为什么说人工智能是一个大谎言
  9. JSP---网页日历
  10. 51 Nod 阶乘后面0的数量
  11. C++---STL中迭代器失效的总结
  12. 支持中国西安申办ICCV2025,见证计算机视觉蓬勃发展的20年| Vote for ICCV2025 Xi'an China...
  13. 【书法字识别】基于matlab余弦形状相似度书法字识别【含Matlab源码 1356期】
  14. 一切皆是映射:浅谈操作系统内核的缺页异常(Page Fault)
  15. ADB Interface 找不到驱动程序
  16. springboot整合分布式任务调度 elastic-job
  17. 跨专业考研应该怎么做?
  18. BDW01手把手系列01:BDW01开发板基于TencentOS Tiny之helloworld!
  19. 第一章 计算机基础知识【信息学奥赛】
  20. 第二十次ScrumMeeting博客

热门文章

  1. 计算机毕业论文怎样写系统的意义,毕业论文写作的目的意义及步骤-计算机论文...
  2. CSDN黑科技----简单暴力
  3. 【英雄九日集训】(七月第一轮)第一天——数组
  4. On ne change pas 做梦的fille
  5. 多元统计分析笔记二——多元分布
  6. Qt开发经验总结之武林秘籍(转)
  7. PHP实现发送邮件功能代码|PHP怎么实现QQ邮件发送|Php发送邮件代码
  8. msconfig提示系统配置无法保存原始启动配置以便以后还原的解决方法
  9. VUE3 子传父 父传子 双向传递
  10. 微信小程序 如何实现列表