当前位置: 首页 > news >正文

redis的set集合的常规使用

关于set我们都知道的就是他是可以用来存字符串或整数的,而且存的每一个元素都是不同的,是唯一的,所以使用set集合最大的一个好处就是可以对存的元素去重,保证存入的元素都是不通用的,接下来就来讲一下set集合是如何被redis利用,成为它的数据类型的;

1、sadd key member [member]

        这个指令就是往key中插入一个或者多个member,可以是字符串,也可以是数字,如果key已经存在就不用新建一个key,而且往原有的key中插入member;如果redis中没有这个key,那就会先新建一个key,然后再往里插入元素;返回值就是成功插入的元素的个数,为什么是成功的个数呢?前面已经说了set会去重,如果如果你插入的是 1 1 2 3,返回值并不是4,而是3,已经两个1只能成功插入一个1;时间复杂度就是0(N),N指的是插入的元素,而不是key存的元素总个数,简单说原因是key存的所有元素的编码类型是hashtable,所以插入一个元素的时间复杂度就是O(1),具体后面会再介绍;

2、smembers key

        返回key存的所有member,时间复杂度是O(N),N指的key存的member的个数

3、sismember key member

        判断member是不是key已存的所有元素中一员,是就是返回1,不是就返回0;

4、spop key [count]

        随机删除count个key中的元素,如果没有指定count,那就是随机删除一个,redis底层的代码原理就是生成一个随机数,然后去删除一个member,时间复杂度是O(N),N的值是count的大小;返回值是成功删除的member的值;

5、smove source destination member

        source和destinaion指定是存的set类型数据的key,这个指令就是把source中的member移动到destination中,返回值是成功移动的元素;如果source不存在或者source不存在member,返回值就是0;1和0也可以说是表示移动成功或者失败;

6、srem key member [member ...]

        删除key中一个或者多个指定的member,返回值就是成功删除的元素,不存在的元素删除不了,已经删除的元素不能再删除一次;

以上的指令已经是能够很简单的使用set集合了,接下来说的不同set集合之间的一些交互操作,比如求交集,并集,差集;相信交并差集的概念是什么,不需要我多说明;

7、sinter keyA keyB;sinterstore destination keyA keyB

        这里求的就是keyA,keyB他们存的元素的交集,比如keyA存的 1 2 3  4,keyB存的是3 4 5 6,那么sinter keyA keyB返回值就是 3 4;这个指令只是求交集并且返回相交的元素;redis还提供的一个指令可以把交集存到一个key里面,比如还是keyA存的 1 2 3  4,keyB存的是3 4 5 6,sinterstore destination keyA keyB,执行的结果就是destination中的元素就是 3 4,返回值是交集的个数,keyA 和keyB的顺序是可以交换的,而且并不局限于两个key求交集,可以是多个,时间复杂是O(N*M),N和M分别指的是所有key中元素最多和最小的两个长度的乘积;

8、sunion keyA keyB;sunionstore destination keyA keyB

        这两个指令是求并集,用法实际和求交集一样;

9、sdiff keyA keyB;sdiffstore destination keyA keyB

         这两个指令是求差集,比较有差异的就是求差集,顺序不一样,求的结果也是不一样的,比如keyA存的 1 2 3  4,keyB存的是3 4 5 6,sdiff keyA keyB的结果就是1 2,表示的意思就是keyA有的元素但是keyB没有的元素;如果sdiff keyB keyA,返回就是 5 6,表示就是keyB有的元素但是keyA没有;

http://www.dtcms.com/a/399650.html

相关文章:

  • 【C++模板编程】从泛型思想到实战应用
  • auto 关键字
  • 工程项目建设自学网站哪家网站开发好
  • 企业网站建设文档微信开发应用平台
  • 大语言模型本身有记忆功能吗?
  • 解决Initializing Python failed: Failed to import encodings module错误
  • 上海做网站哪里有wordpress环境安装
  • 兖州市做网站wordpress电子商务视频教程
  • 优秀网站模板中国10大装修公司排名
  • python++springboot+nodejs微信小程序高校实验室管理系统 实验室预约登记 设备借用管理 实验记录审核系统
  • 外贸精品网站建设网站运营介绍
  • 构建神经网络的两大核心工具
  • 品牌高端网站制作金蝶软件多少钱
  • 基于STM32舞台彩灯控制器设计app控制系统
  • 2D激光定位与建图
  • shell编程:grep - 文本搜索利器(1)
  • 网站建设制作公司地址做照片书网站
  • 鸿蒙Next远端状态订阅开发实例:实现进程状态监控与资源管理
  • 济宁做网站的WordPress重新安装删除哪个
  • Deep Residual Learning for Image Recognition 阅读笔记
  • 【AI】【Java后端】深度解析 RAG 高级功能:从原理到落地实践
  • 微信移动网站建设做电影网站用什么空间
  • 银行测试存款业务(四)
  • C#练习题——匿名方法与闭包实战:函数式编程的优雅实现
  • 西安有哪些网站设计公司seo排名优化推广报价
  • 深圳安鸿源建设网站上海网站建站建设服务
  • H3C 三层VLAN路由实验
  • 深圳做购物网站小米发布会8月
  • 【GPT入门】第71课 autogen介绍与代码实现股票分析汇报多智能体
  • 网页源码 html源码网站 网页源代码模板