序言

在Redis中,Set和list都是字符串序列,非常相似,不同之处在于Set是用哈希表来保持字符串的唯一性,没有先后顺序,不像list一样,可以在首尾增删数据。但是set也有自己的相应处理命令来完成对自己的操作。下面我们来看下Set的命令怎么使用。

操作单个set的命令

redis中set列表的新增命令Sadd,key值相同下的value值不能重复,返回插入的数据个数,key后面可跟多个value值

127.0.0.1:6379>sadd mySet 1   ---添加key为mySet的set数据值为1,

127.0.0.1:6379>sadd mySet 2 4 5  ---添加key为mySet的set数据值为2,

redis中查看set数据集合的命令:smembers,可以获取全部的元素,当set成员比较多时考虑其性能啊

127.0.0.1:6379>smembers  mySet     ---获取key为mySet的说有set数据值集合

redis中set判断某个key的value中是否存在某个值的命令:sismember ,如果存在返回1,不存在返回0

127.0.0.1:6379>sismember mySet 3  ---返回值为0,因为myset的set成员中只有1,2没有3

127.0.0.1:6379>sismember mySet 2   ---返回值为1,因为myset的Set成员中存在2.

redis中set的删除数据命令srem,返回删除个数,key后面可跟多个value值

127.0.0.1:6379>srem mySet 1   ---删除key为mySet,value为1的数据项。

127.0.0.1:6379>srem mySet 2 4     ---删除key为mySet,value为2和4的2个数据项。

redis中查看set数据个数的命令scard,如果不存在返回0

127.0.0.1:6379>sadd mySet 1 2 3 4 5

127.0.0.1:6379>scrad mySet   ---查看mySet中存在多少个数据项,返回结果为5

redis中set随机查看元素命令srandmember

127.0.0.1:6379>srandmember mySet   ---输出key为mySet的数据项中的随机一个value,

redis中set随机删除一个元素的命令spop,并返回输出删除的数据

127.0.0.1:6379>spop mySet    ----随机从key为mySet的数据集合中删除一条数据,并返回输出删除的数据

127.0.0.1:6379>scard mySet    ---key为mySet的数据集合中的数据个数为4

操作多个set的命令

set除了对一个set中的元素进行增删改查外,还可以对多个set进行操作,比如将一个set的元素移到另外一个set中,计算多个set的并集,交集,差集等操作。

redis中set将一个set中的元素移动到另外一个set中的命令smove

127.0.0.1:6379>sadd mySet 1 2 3    ----向mySet中添加3条数据 1 2 3

27.0.0.1:6379>sadd youSet 3 4 5     ----向youSet中添加3条数据 3 4 5

127.0.0.1:6379>smove youSet mySet 4  ---将youSet中的数据4移除的同时将数据4添加到mySet中

127.0.0.1:6379>smembers mySet   ---结果为:1 2 3 4

127.0.0.1:6379>smembers youSet   ---结果为 3 5

redis中set求交集命令sinter

127.0.0.1:6379>sinter mySet youSet   ---输出结果为mySet和youSet的交集,输出结果为:3

redis中set求并集的命令sunion

127.0.0.1:6379>sunion mySet youSet    ---输出结果为mySet与youSet的并集,输出结果为:1 2 3 4 5

redis中set求差集的命令sdiff

127.0.0.1:6379>sdiff mySet youSet     ---输出结果为mySet中youSet不存在的数据,输出结果为:1 2 4

127.0.0.1:6379>sdiff youSet mySet   ---输出结果为youSet中mySet不存在的数据,输出结果为:5

小结

如果你在看到本文后有什么疑问,请加入博客左上角群,一起交流学习。

我的redis系列博文:双击地址

最新文章

  1. 前端开发:setTimeout与setInterval 定时器与异步循环数组
  2. 锁的封装 读写锁、lock
  3. Java提高篇——通过分析 JDK 源代码研究 Hash 存储机制
  4. ajax 同步异步调用
  5. Go语言之异常处理
  6. 阿里云ECS每天一件事D3:挂载硬盘
  7. 在后台运行erlang;在需要时连回交互模式
  8. Java数组练习题小结
  9. Python之路【第一篇】:Python简介和入门
  10. 怎样提供一个好的移动API接口服务/从零到一[开发篇]
  11. nexus私服常用设置
  12. zyb的面试
  13. Java多线程-----volatile关键字详解
  14. 20165205 2017-2018-2《Java程序设计》结对编程一 第二周总结
  15. HDU 6441 - Find Integer - [费马大定理][2018CCPC网络选拔赛第4题]
  16. PHP实现日志处理类库 - 【微信开发之微电商网站】技术笔记之二
  17. kvm图形化管理工具
  18. handsontable 概述
  19. Am335x U-boot LCD简易驱动
  20. Linux--sudo权限讲解

热门文章

  1. JS调用Android、Ios原生控件
  2. Microservice架构模式简介
  3. Bootstrap-Select 动态加载数据的小记
  4. 前端学HTTP之报文首部
  5. [C#] 了解过入口函数 Main() 吗?带你用批处理玩转 Main 函数
  6. Win.ini和注册表的读取写入
  7. ASP.NET 5 RC1 升级 ASP.NET Core 1.0 RC2 记录
  8. c#多线程
  9. Tomcat常见问题及常用命令
  10. MVC还是MVVM?或许VMVC更适合WinForm客户端