Redis——》数据类型:zset(有序集合)

news2024/10/6 22:30:45

推荐链接:
    总结——》【Java】
    总结——》【Mysql】
    总结——》【Redis】
    总结——》【Spring】
    总结——》【SpringBoot】
    总结——》【MyBatis、MyBatis-Plus】

Redis——》数据类型:zset(有序集合)

  • 一、简介
  • 二、应用场景
  • 三、底层结构
  • 四、操作示例
    • (1)增
    • (2)删
    • (3)改
    • (4)查
    • (5)计算
  • 五、排序是怎么实现的?

一、简介

已排序的字符串集合,同时元素不能重复
每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。
有序集合的成员是唯一的,但分数(score)却可以重复。
集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是O(1)。
集合中最大的成员数为 232 - 1(4294967295, 每个集合可存储40多亿个成员)。

二、应用场景

排行榜,社交需求(如用户点赞)

三、底层结构

ziplist(压缩列表)、skiplist(跳跃表)

四、操作示例

(1)增

语法示例描述
zadd key score1 member1 [score2 member2]zadd k1 1 a 2 b向有序集合添加一个或多个成员,或者更新已存在成员的分数

(2)删

语法示例描述
zrem key member [member …]zrem k1 a b移除有序集合中的一个或多个成员
zremrangebylex key min maxzremrangebylex k1 0 1移除有序集合中给定的字典区间的所有成员
zremrangebyrank key start stopzremrangebyrank k1 0 1移除有序集合中给定的排名区间的所有成员
zremrangebyscore key min maxzremrangebyscore k1 0 10移除有序集合中给定的分数区间的所有成员

(3)改

见增

(4)查

语法示例描述
zcard keyzcard k1获取有序集合的成员数
zrange key start stop [WITHSCORES]zrange k1 0 1通过索引区间返回有序集合成指定区间内的成员
zrangebylex key min max [LIMIT offset count]zrangebylex k1 0 1通过字典区间返回有序集合的成员
zrangebyscore key min max [WITHSCORES] [LIMIT]zrangebyscore k1 0 10通过分数返回有序集合指定区间内的成员
zrank key memberzrank k1 a返回有序集合中指定成员的索引
zrevrange key memberzrevrange k1 a返回有序集合中指定成员的排名,有序集成员按分数值递减(从大到小)排序
zscore key memberzscore k1 a返回有序集中,成员的分数值
zrevrange key start stop [WITHSCORES]zrevrange k1 0 1返回有序集中指定区间内的成员,通过索引,分数从高到底
zrevrangebyscore key max min [WITHSCORES]zrevrangebyscore k1 0 10返回有序集中指定分数区间内的成员,分数从高到低排序
zscan key cursor [MATCH pattern] [COUNT count]zscan k1 cursor迭代有序集合中的元素(包括元素成员和元素分值)

(5)计算

语法示例描述
zcount key min maxzcount k1 0 10计算在有序集合中指定区间分数的成员数
zincrby key increment memberzincrby k1 1 a有序集合中对指定成员的分数加上增量 increment
zinterstore destination numkeys key [key …]zinterstore destkey k1 k2计算给定的一个或多个有序集的交集并将结果集存储在新的有序集合 key 中
zlexcount key min maxzlexcount k1 0 10在有序集合中计算指定字典区间内成员数量
zunionstore destination numkeys key [key …]zunionstore destkey k1 k2计算给定的一个或多个有序集的并集,并存储在新的 key 中
help @zset

# zadd key score member
zadd k1 8 apple 2 banana 3 orange

# 分值排序,按索引查询
zrange k1 0 -1
# 分值排序,按索引查询
zrange k1 0 -1 with sroce

# 分值排序,按分值查询
zrangebyscore k1 3 8

# 分值排序,从小到大取前2个
zrange k1 0 1

# 分值排序,从大到小取前2个
zrerange k1 0 1

# 通过元素取出分值
zscore k1 apple

# 通过元素取出排名
zrank k1 apple

# 元素增加分值
zincrby k1 2.5 banana

# 歌曲排行榜(下载、点击、播放)



zadd k1 80 tom 60 sean 70 baby
zadd k2 60 tom 100 sean 40 yiming

# 相同元素默认相加
zunionstore unkey 2 k1 k2
zrange unkey 0 -1 withscores

# k1权重为1,k2权重为0.5
zunionstore unkey 2 k1 k2 weights 1 0.5
zrange unkey 0 -1 withscores

# 相同元素取最大值
zunionstore unkey 2 k1 k2 aggregate max
zrange unkey 0 -1 withscores


五、排序是怎么实现的?

在这里插入图片描述

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

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

相关文章

基于SpringBoot的在线点餐系统【附源码】

功能模块设计 技术概要 前端技术:JQuery,Thymeleaf, CSS 后端技术:SpringBoot,SpringMVC,mybaits 数据库:mysql 主要功能 首页实现 主页也是网址的入口处,一般包括了:LOGO、导航、Banner、…

C指针之初始化(三)

一、引言 C/C语言中引入了指针,使得程序能够直接访问内存地址,使得很多复杂的操作变得简单,同时也提高了程序的运行效率。指针即是地址,但是地址却是通过指针变量来存储的。因此我们通常所说的指针在很多时候说的都是指针变量。指…

AzkabanExecutorServer自动注册分析

启动AzkabanExecutorServer发现会自动注册,但是active默认为0,需要修改为1,否则 SELECT id, host, port, active FROM executors where activetrue查询不到记录,导致 AzkabanWebServer启动时候还是失败。 因此azkaban的正确启动…

MySQL的行锁和表锁

锁是计算机协调多个进程或纯线程并发访问某一资源的机制。在数据库中,除传统的计算资源(CPU、RAM、I/O)的争用以外,数据也是一种供许多用户共享的资源。如何保证数据并发访问的一致性、有效性是所在有数据库必须解决的一个问题&am…

复现黑客在后门中藏匿后门

PHP实现在后门中藏匿后门 在攻击渗透的时候会传入shell后门方便进行远控。其中的后门包括多种类型,大马是功能最全的直接提供了可视化的界面方便攻击者进行提权、扫描、上传等一系列的操作。 但有很多hacker不讲武德,在写好的大马中藏入自己的后门&…

Java#28(集合进阶1---单列集合)

目录 一.Collection---------单列集合-------一次只能添加一个元素,如: 小明 1.Collection的常用方法 2.Collection的遍历 迭代器遍历 增强for遍历 Lambda表达式 3.List集合的特有方法 List集合的5种遍历方式 ArrayList集合 泛型 4.Set的方法和遍历方式 HashSet集合 …

如何用看板工具做轻量级项目管理

本文分享一下,怎么用看板工具做轻量级项目管理。 说起管理项目,会遇到各种各样的事情,我们多多少少有些头疼,人员任务分配不均,对接不及时,沟通过不及时等等。 我们包括采购、人力资源、销售、市场都在用…

【深度学习】torch.squeeze()移除维度函数 | torch.unsqueeze()增加某一维度函数 | pytorch

文章目录前言一、torch.squeeze()函数二、torch.unsqueeze()函数前言 这两个函数在pytorch框架下的深度学习经常用到,这次把它们记录一下。 一、torch.squeeze()函数 torch.squeeze()用来“挤”掉某一个维度为1的维度,或者所有维度为1的维度。&#x…

Unity3D教程:布娃娃系统

首先,将你3Dsmax的角色和Bipes汇出成FBX档,设定如下即可。(注意不可以有中文路径喔否则无法正确汇出) 打开Unity3D, 可以看见我的场景内只有:摄影机、人物(Man)、灯光、地板。 在Hierarchy视窗内将人物(Man)的Bip01所有标签打开&a…

WebRTC学习笔记一 简单示例

一、捕获本地媒体流getUserMedia 1.index.html <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><meta http-e…

基于预训练模型的Unet【超级简单】【懒人版】【Pytorch版】

基于预训练模型的Unet【超级简单】【懒人版】【Pytorch版】 在本项目开始前&#xff0c;首先给大家保证&#xff0c;本次项目只是一个最简单的Unet实现&#xff0c;使用现成的代码&#xff0c;不需要手写代码&#xff0c;使用预训练模型&#xff0c;不需要标注数据集和训练。所…

NTFS及文件共享

一&#xff0c;NTFS安全权限概述 1、给文件和文件夹设置权限&#xff0c;通过设置权限&#xff0c;实现不同的用户访问不同文件和文件夹的权限。 2、分配了正确的访问权限后&#xff0c;用户才能访问对应资源。 3、设置权限防止资源被篡改、删除。 二、文件系统概述 文件系统…

[附源码]Python计算机毕业设计SSM旅游服务平台(程序+LW)

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

Whistle 前端抓包

whistle文档&#xff1a;http://wproxy.org/whistle/install.html 1.确保电脑安装了node node -v如果能正常输出Node的版本号&#xff0c;表示Node已安装成功 2.安装whistle npm install -g whistlewhistle安装完成后&#xff0c;执行命令 whistle help 或 w2 help&#xf…

Spring——三级缓存解决循环依赖详解

三级缓存解决循环依赖详解一、什么是三级缓存二、三级缓存详解Bean实例化前属性赋值/注入前初始化后总结三、怎么解决的循环依赖四、不用三级缓存不行吗五、总结一、什么是三级缓存 就是在Bean生成流程中保存Bean对象三种形态的三个Map集合&#xff0c;如下&#xff1a; // 一…

IPv6进阶:IPv6 过渡技术之 NAT64(IPv6 节点主动访问 IPv4 节点-地址池方式)

实验拓扑 PC1是IPv4网络的一个节点&#xff0c;处于Trust安全域&#xff1b;PC2是IPv6网络的一个节点&#xff0c;处于Untrust安全域。 实验需求 完成防火墙IPv4、IPv6接口的配置&#xff0c;并将接口添加到相应的安全域&#xff1b;在防火墙上配置NAT64的IPv6前缀3001::/64&…

cpu设计和实现(数据访问)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 在cpu设计当中&#xff0c;数据访问是比较重要的一个环节。一般认为&#xff0c;数据访问就是内存访问。其实不然。我们都知道&#xff0c;cpu访问…

【微服务】SpringCloud中Ribbon的轮询(RoundRobinRule)与重试(RetryRule)策略

💖 Spring家族及微服务系列文章 ✨【微服务】SpringCloud中Ribbon集成Eureka实现负载均衡 ✨【微服务】SpringCloud轮询拉取注册表及服务发现源码解析 ✨【微服务】SpringCloud微服务续约源码解析 ✨【微服务】SpringCloud微服务注册源码解析 ✨

Nginx的操作

一、什么是nginx。 Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器 , 其特点是占有内存少&#xff0c;并发能力强&#xff0c;事实上nginx的并发能力在同类型的网页服务器中表现较好。 Nginx代码完全用C语言从头写成 . 能够支持高达 50,000 个并发连接数的响应. 现在…

【pen200-lab】10.11.1.72

pen200-lab 学习笔记 【pen200-lab】10.11.1.72 &#x1f525;系列专栏&#xff1a;pen200-lab &#x1f389;欢迎关注&#x1f50e;点赞&#x1f44d;收藏⭐️留言&#x1f4dd; &#x1f4c6;首发时间&#xff1a;&#x1f334;2022年11月27日&#x1f334; &#x1f36d;作…