Redis中set,zset

news2024/11/25 8:19:29

集合类型set中的数据是无序的,不能重复的

SET

  • SADD key value [value....] 将一个或者多个元素添加到集合set中,重复的元素是无法进行添加的 返回值为添加成功的数字
  • smembers key 获取set中所有的元素,返回元素的顺序是无序的
  • sismember key value 判断一个元素是否在set集合中 返回1存在,返回0不存在
  • spop key [count] 从set中删除count个元素,但是count中元素是无序的,所以这里也就是随机删除 不写count的话就是随机删除一个,写了几个就是随机删除几个 官方文档承认的随机
  • srandmember key [count] 随机获取count个元素
  • smove source destination value 把一个set中的元素取出并放到另一个set中 要是像另外一个set移动的过程中,另外一个set存在相应元素,只会进行第一个set删除的操作,也还是能执行成功,但要是移动的set不存在相应的value则会移动失败
  • srem key value[value....] 可以一次删除一个value,也可以一次删除多个value 返回删除成功的个数
  • sinter key [key...] 此处每一个key都对应了一个集合,最后返回所有集合的交集
  • sinterstore destination key [key...] 把返回交集的元素全部放到destination这个集合里面
  • sunion key [key...] 求此处每一个key对应集合的并集
  • sunionstore destination key [key...]  把返回并集的元素全部放到destination这个集合里面
  • sdiff key key2 求集合的差集

    集合的内部编码

ZSET

有序集合,但是这里的有序和list列表那个有序是不同的有序,这里的有序的话指的是,升序或者降序排列,当然引入了升序和降序排列,肯定需要同时引入一个升序和降序排列的标准,zset中又引入了一个叫分数的名词。 按照分数的高低进行一个排序.但是ZSET主要还是用来存储内容的,分数只是一个辅助的作用 要是元素的分数相同的话,会以字典序进行一个排列   zet本身内部用升序进行的一个排序

  • ZADD key [NX | XX]   [GT | LT]   [CH]   [INCR] score member [socre member...]
    方括号中为可选项,但是往zest中添加元素的时候,必须为每个元素添加一个分数(score),但是不能把他们两个的关系理解为键值对,他们之间有明确的角色区分的。

    如果member不存在 往zset中添加元素时就正常添加,要是么member已经存在,则往member中添加元素的时候。就会更新分数

    XX:添加之后,只会更新已经存在member的分数,不会往set中添加新的元素了
    NX:只添加新元素,添加重复的元素就不会修改分数了
    LT:less than 的缩写 只更新已经存在的分数 且新的分数必须比当前分数小 否则更新失败 且加上LT之后任然可以增添新的元素
    GT:great than 的缩写 只更新已经存在的分数 且新的分数必须比当前分数大 否则更新失败 且加上GT之后任然可以增添新的元素
    CH:普通情况下zadd是返回新增元素的个数 加上CH之后还会告诉我们被修改元素的个数
    INCR:可以对原有分数进行一个加减的操作
    ZADD的时间复杂度(log(N))此处的n表示集合中元素的个数 ZSET内部数据结构(跳表)
  • ZRANGE key index1, index2 [withscores] 查找1和2之间对应下标的元素 withscore返回值是否带上分数 因为内部是有序的 所以有索引的概念
  • zcard key 获取zset中元素的个数
  • ZCOUNT key min  max  获取分数在min到max之间的元素的个数 并且是一个闭区间 要是想要他变开区间可以加一个( 有括号那边就是开区间 ,但是一般不用 (95 97 就是左开又闭把95的
    分数给排除了 (95 (97 表示一个开区间 写法很奇葩 


同时在浮点数中存在两个很特殊的值
1. inf 无穷大
2. -inf 负无穷大 

  • zrevrange key index1 index2 [withsocres]    rev表示reverse 逆序的意思,就是按照分数降序遍历并进行打印 索引1顺序不需要转换,只是按照逆序进行一个输出 根据下表索引来找元素
  • zrangebysocre key socre1 socre2 [withsocres] 和刚刚根据索引不同,这个是根据分数来找元素的
  • zpopmax key [count] 删除并返回分数最高的count个元素 如果存在多个元素元素相同,则会删除字典序在前的元素
  • bzpopmax key [count] timeout  阻塞版本的zpopmax timeout表示最长的阻塞时间单位是秒
    当前元素不够或者没有元素的时候,会进行一个阻塞直到其他客户端向这里添加元素之后进行一个删除
  • zpopmin key [count] 和上述的popmax用法一样 删除集合中最小的count个元素
  • bzpopmin key [count] timeout 和上述的bzpopmax用法一样的
  • zrank key member 获取指定元素的排名,最大的元素为第一名升序 要是不存在该元素则返回空
  • zrevrank key member 也是获取指定元素的排名 但是是降序 最小的元素为第一名
  • zrem key member [member... ]  删除指定的元素
  • zremrangebyrank key start end 根据start到end的下标进行一个删除 左闭右闭
  • zremrangebbyscore key score1 score2 根据指定的分数进行一个删除 左闭右闭
  • zincrby key increment member  为元素的分数增加或减少相应的分数值

交集 并集 

  • zinterstore destination numkeys key [key...] [weights weight [weight...]] [aggregate<sum | min | max>] 交集 并保存到另一个key中

    numkeys:一个整数 来描述后面有多少个key weights也是整数用来描述后面有多少个weight
    因为后面还有很多个可选项,所以这里需要明确列出有多少个key
    destination:用来保存结果的key
    weight:权重 因为有序集合是有分数的,此处的权重相当于一个系数,每个集合的分数会和对应的权重进行一个相乘
    aggregate:总数 因为在zset中分数只是一个辅助作用,在进行交集比较的时候,是以元素为主的所以这里的aggregate是表示最后返回集合中分数怎么算 如果是sum 则把交集中的分数相加 max则是取最大值 min取最小值
  • zunionstore destination numkeys key [key...] [weights weight [weight...]] [aggregate<sum | min | max>]   和上述zinterstore使用方式相同只不过这里是求并集 并保存到另一个key中

内部编码方式

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1512098.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

React Hooks 那些事儿

翻了波之前写的文章还有笔记&#xff0c;发现关于前端的文章并不多&#xff08;好歹也划水做过点前端开发&#xff09;。巧了&#xff0c;最近没什么好话题可写&#xff0c;做下 React Hooks 学习笔记吧。 Effect Hook 不得不说 Hook 的出现降低了我们在 React 中处理副作用&…

【漏洞复现】SpringBlade error/list SQL 注入漏洞

免责声明&#xff1a;文章来源互联网收集整理&#xff0c;请勿利用文章内的相关技术从事非法测试&#xff0c;由于传播、利用此文所提供的信息或者工具而造成的任何直接或者间接的后果及损失&#xff0c;均由使用者本人负责&#xff0c;所产生的一切不良后果与文章作者无关。该…

定时执行专家 —— 让工作更高效,生活更便捷

在现代社会&#xff0c;高效的时间管理已经成为我们工作和生活中不可或缺的一部分。为了实现这一目标&#xff0c;我们经常会借助各种工具和软件来辅助我们完成定时任务。今天&#xff0c;我要为大家介绍一款功能强大、操作简便的定时任务执行软件——《定时执行专家》。这款软…

上海计算机学会 2023年11月月赛 丙组T5 推箱子(数学 思维 排序)

第五题&#xff1a;T5推箱子 标签&#xff1a;排序、数学、思维题意&#xff1a;给定 t t t组数据&#xff0c;每组数据给定长度为 n n n的字符串&#xff0c; 表示箱子&#xff0c; _ \_ _表示空格&#xff0c;求把箱子都推到一起&#xff08;即两两箱子之间没有空格&#…

idea+maven+tomcat+spring 创建一个jsp项目

概述&#xff1a;我真服了&#xff0c;这个垃圾学校还在教jsp&#xff0c;这种技术我虽然早会了&#xff0c;但是之前搞的大多都是springboot web类型的&#xff0c;这里我就复习一下&#xff0c;避免以后忘记这种垃圾技术 第一步&#xff1a;创建maven项目 第二步&#xff1a…

Leetcode 3.12

leetcode hot 100 链表1.两两交换链表中的节点2.随机链表的复制3.排序链表 链表 1.两两交换链表中的节点 两两交换链表中的节点 1.必须要设置一个dummy (temp) 结点2.保存第二个节点3.先让第一个节点指向第三个节点4.再让第二个节点指向第一个节点5.最后让dummy指向第二个节点…

基于深度学习的番茄叶片病害检测系统(含UI界面、yolov8、Python代码、数据集)

项目介绍 项目中所用到的算法模型和数据集等信息如下&#xff1a; 算法模型&#xff1a;     yolov8 yolov8主要包含以下几种创新&#xff1a;         1. 可以任意更换主干结构&#xff0c;支持几百种网络主干。 数据集&#xff1a;     网上下载的数据集&#x…

宏景eHR downlawbase SQL注入漏洞复现

0x01 产品简介 宏景eHR人力资源管理软件是一款人力资源管理与数字化应用相融合,满足动态化、协同化、流程化、战略化需求的软件。面向复杂单组织或多组织客户,支持流程,B/S架构。特别适合集团化管理和跨地域使用的产品,融合了最新的互联网技术和先进的人力资源管理理念和实…

浏览器与服务器通信过程(HTTP协议)

目录 1 概念 2 常见的 web 服务器有 3 浏览器与服务器通信过程 3.1 DNS 3.2 URL 4 HTTP请求方法和应答状态码 4.1 HTTP请求报文段实例 4.2 HTTP请求方法 5 HTTP应答报头和应答状态 5.1 HTTP的应答报头结构 5.2 HTTP的应答状态 1 概念 浏览器与 web 服务器在应用层通…

【DAY11 软考中级备考笔记】数据结构 查找和排序

数据结构 查找和排序 3月12日 – 天气&#xff1a;晴 1. 顺序查找 顺序查找就是简单的从头一个一个的进行比较&#xff0c;注意它的平均查找长度 2. 折半查找 折半查找和二叉排序树一致&#xff1a; 优点&#xff1a;查找效率很高 缺点&#xff1a;要求必须是循序存储并且表中…

UVC 设备框架在 Linux 4.15 内核的演变

1. 概述 发现之前的uvc框架和现在的还是有一些差别的&#xff08;比如从videobuf 过渡到videobuf2&#xff09;&#xff0c;写个blog记录一下&#xff0c;方便以后查询&#xff0c;我的内核版本&#xff1a;Linux 4.15 UVC&#xff08;USB Video Class&#xff09;设备框架是…

Shadertoy内置函数系列 - mod 取模运算

mod函数返回x % 3的结果 先看一个挑战问题题目&#xff1a; Create a pattern of alternating black and red columns, with 9 columns of each color. Then, hide every third column that is colored red.The shader should avoid using branching or conditional statemen…

jeecg 项目 springcloud 项目有一个模块 没加载进来 只需要 把这个模块放到 可以加载到模块的位置 刷新依赖

springcloud 项目有一个模块 没加载进来 只需要 把这个模块放到 可以加载到模块的位置 刷新依赖

docker+elasticsearch

一&#xff0c;环境准备&#xff1a;安装docker&#xff08;往期文章&#xff09; 二&#xff0c;elasticsearch简介&#xff1a; 用于储存数据 三&#xff0c;部署&#xff1a; 1&#xff09;&#xff0c;拉取镜像 使用本作者提供的java17镜像 2&#xff09;&#xff0c;…

刷题日记——01字符串、非素数个数(厦门大学机试)

题目1——01字符串 分析 经过拆解找规律&#xff0c;发现是两个斐波那契 那么代码就好写了呀 #include <stdio.h>unsigned long long f(int n){if(n0||n1){return n;}return (f(n-1)f(n-2))%2333333; }int main(){int n;scanf("%d",&n);printf("%…

服务器段的连接端口和监听端口编程实现

new ServerSocket(int)是开启监听端口&#xff0c;并不是连接端口。真正的连接端口是随机开辟的空闲端口&#xff0c;当连接创建完成后&#xff0c;监听关口可以继续等待下一次连接请求&#xff0c;处于空闲等待状态。 编程实现方式 1 、主线程一直处于阻塞等待状态&#xff0c…

【功能大全】手机短信验证码一键注册登录流程

目录 发送验证码 注册登录 用户表设计 ​编辑申请腾讯云短信与密钥 找到云短信服务 开通腾讯云短信服务 ​编辑​​​​​创建短信签名 ​编辑​编辑创建短信正文模版​编辑​编辑 等待审核 测试短信​编辑 SDK密钥创建 SpringBoot集成腾讯云短信 pom中导入腾讯云短…

Unity 显示MeshRenderer的渲染层级

Unity 显示MeshRenderer的渲染层级 前言源码MeshRendererInspectorSkinnedMeshRendererInspector 参考 前言 Mesh Renderer和Skinned Mesh Renderer组件默认不显示Order&#xff0c;找了个工具显示一下。 源码 下面两个代码放入Editor文件夹中 MeshRendererInspector Me…

互联网高频面:输入URL按下回车后,中间发生了什么

题目 输入URL按下回车后&#xff0c;中间发生了什么 这个问题其实是计算机网络里面很经典的一个问题&#xff0c;不能去死机硬背&#xff0c;很考察对网络架构和通信原理的理解&#xff0c;也是各个互联网大厂喜欢考察的面试题。 一些图片参考了小林的计算机网络面经 从输入…

Elasticsearch基础操作

一、Restful接口 Elasticsearch通过RESTful接口提供与其进行交互的方式。在ES中&#xff0c;提供了功能丰富的RESTful API的操作&#xff0c;包括CRUD、创建索引、删除索引等操作。你可以用你最喜爱的 web 客户端访问 Elasticsearch 。事实上&#xff0c;你甚至可以使用 curl …