redis 学习笔记(六) sorted_set数据类型
目录
一. sorted_set数据类型的介绍
二.sorted_set数据类型的基本操作
三.sorted_set实现排行榜
四.sorted_set类型的应用场景(一)
五.sorted_set类型应用场景(二)
一. sorted_set数据类型的介绍
新的存储需求:数据排序有利于数据的有效展示,需要根据一种可以根据自身特征的排序方式
sorted_set数据----支持排序
需要的存储结构:新的存储模型,可以保存可排序的数据
sorted_set类型:在set的存储结构基础上添加可排序的字段
二.sorted_set数据类型的基本操作
1.添加数据
zadd key score1 member1 score2 member2
2.获取全部数据
zrange key start stop [withscores] 展示权限 正向操作 由小到大
zrevrange key start stop [withscores] 展示权限 反向操作 由大到小
3.删除数据
zrem key memeber1 [memeber2]
4.sorted_set的常用操作
(1)按条件操作数据
zrangebyscore key min max [withscore] [limit] 从score 的一个范围到另一个范围 正序
zrevrangebyscore key max min [withscore] [limit] 从score 的一个范围到另一个范围 倒叙
(2) 按条件删除数据
zremrangebyrank key start stop 按索引删除
zremrangebyscore key min max 按分数权限删除
注意:
min与max用于限定搜索查询的条件
start与stop用于限定查询范围,作用于索引,表示开始和结束的索引
offset和count用于限定查询范围,作用于查询结果,表示开始位置和数据总量
5.获取集合数据总量
zcard key
zcount key min max 查看score数据范围里有多少个数据
6.集合交并操作
zinterstore destination numkeys key [key ...] 交集
zunionstore destination numkeys key1 [key ...] 并集
求交并集会将score权值进行求和操作
三.sorted_set实现排行榜
排序的问题
业务场景:
为所有排名的资源建立排序依据
解决方案:
获取数据对应的索引(排名)
zrank key member
zrevrank key member
score 值获取与修改
zscore key member
zincrby key increment member
tips13:
redis应用于计数器组合排序功能对应的排名
sorted_set类型
1.score 保存的数据存储空间为64位,整数范围是 -9007199254740992~9007199254740992
2.score保存的数据也可以是一个双精度的doubbo值,基于双精度浮点数的特征,但可能会丢失精度
3.sorted_set底层存储还是基于set结构的,因此数据不能重复,如果重复添加相同的数据,score值将被反复覆盖,保留最后一次修改的结果
四.sorted_set类型的应用场景(一)
业务场景
1.vip体验,网站定期开启投票讨论限时进行 sorted_set有效管理此类信息
解决方案
1.对于基于时间线限定的任务处理,将处理时间记录为score值,利用排序功能区分处理的前后顺序
2.记录下一个要处理的时间,当到期后处理对应任务,移除redis中的记录,并记录下一个要处理的时间
3.当新任务加入时,判定并更新当前下一个要处理的任务时间
4.为了提升sorted_set性能,通常将任务根据特征存储成若干个sorted_set,例如将1小时内,1天内,1周内,一月内,季度,年度等,操作的若干任务都纳入到1小时内处理的队列中
tips14:
redis应用于定时任务执行顺序管理和任务过期管理
五.sorted_set类型应用场景(二)
业务场景
任务/消息权重设定应用
当任务或者消息待处理,形成任务队列或者消息队列时,对于高优先级的任务要保障对其优先应用,如何实现任务权重管理,延时队列
解决方案:
对于带权重的任务,优先处理权重高的任务,采取score记录权重即可
多条件任务权重设定
如果权重条件过多,需要对排序score值,进行处理,保障score值能够兼容2个或多个条件,例如
1.外贸订单优于国内订单,总裁订单优于员工订单
2.因score长度受限,需对数据进行截断处理,尤其是时间设置小时或分钟级可(折算后)
3.先设定订单类被,后设定订单发起角色类别,整个score长度必须是统一的,不足位补0,第一道排序规则首位不得为0
例如 外贸101 国内102 经理 004 员工 008
员工下的外贸单为 101008(小)
经理下的国内单为 102004(大)
tips15:
redis应用定时任务/消息队列定时管理
redis 学习笔记(六) sorted_set数据类型相关推荐
- Redis学习笔记(五)——持久化及redis.conf配置文件叙述
对于日常使用来说,学习完SpringBoot集成Redis就够我们工作中使用了,但是既然学习了,我们就学习一些Redis的配置及概念,使我们可以更深层次的理解Redis,以及增强我们的面试成功概率,接 ...
- Redis学习笔记 - 数据类型与API(1)Key
Redis学习笔记 - 数据类型与API(1)Key Key相关命令 1. 常用命令 命令 含义 时间复杂度 keys 查找所有符合给定模式 pattern 的 key O(N), N 为数据库中 k ...
- StackExchange.Redis学习笔记(二) Redis查询 五种数据类型的应用
StackExchange.Redis学习笔记(二) Redis查询 五种数据类型的应用 原文: StackExchange.Redis学习笔记(二) Redis查询 五种数据类型的应用 Connec ...
- Redis学习笔记(一) 数据类型事务异常Jredis
Redis学习笔记(一) NoSql概述 Nosql四大分类 Redis入门 简介 Windows安装 基础使用 问题 Redis4.0之前为什么是单线程 单线程为什么这么快 Redis4.0后的多线 ...
- Redis学习笔记(B站狂神说)(自己总结方便复习)
Redis学习笔记B站狂神说 redis: 非关系型数据库 一.NoSQL概述 1.为什么要用Nosql 1.单机Mysql的年代 思考一下,这种情况下:整个网站的瓶颈是什么? 1.数据量如果太大,一 ...
- Redis(学习笔记)
Redis学习笔记 1.NoSQL数据库 1.1解决的问题 1.1.1解决CPU及内存压力 1.1.2解决IO压力 1.2NoSQL数据库概述 1.2.1什么是NoSQL数据库 1.2.2适用与不适用 ...
- Redis学习笔记①基础篇_Redis快速入门
若文章内容或图片失效,请留言反馈.部分素材来自网络,若不小心影响到您的利益,请联系博主删除. 资料链接:https://pan.baidu.com/s/1189u6u4icQYHg_9_7ovWmA( ...
- Redis学习笔记——SpringDataRedis的使用
与Spring集成 我需要哪些jar包? <dependency><groupId>org.springframework.data</groupId><ar ...
- Redis学习笔记1-理论篇
目录 1,Redis 数据类型的底层结构 1.1,Redis 中的数据类型 1.2,全局哈希表 1.3,数据类型的底层结构 1.4,哈希冲突 1.5,rehash 操作 2,Redis 的 IO 模型 ...
- Redis学习笔记(八)redis之lua脚本学习
redis系列文章目录 使用spring-data-redis实现incr自增 Redis 利用Hash存储节约内存 Redis学习笔记(九)redis实现时时直播列表缓存,支持分页[热点数据存储] ...
最新文章
- html css发展前景,网页设计的发展趋势
- linux 安装ftp下载,LINUX FTP安装与配置
- [css] 你有用过clip-path吗?说说你对它的理解和它都有哪些运用场景?
- 【Pytorch神经网络理论篇】 05 Module类的使用方法+参数Parameters类+定义训练模型的步骤与方法
- python自动输入账号密码_Python如何基于selenium实现自动登录博客园
- ES6 深拷贝_你别自以为是:ES6误区 之 Object.assign()、const
- 用GAN炼制长生不老药,这么玄幻的公司竟然能拿到药企投资
- oracle日期00开头,【原】Oracle中产生 “0000-00-00”格式的日期
- 使用python原生态的min和max函数实现升序排序和降序排序
- 【元胞自动机】基于matlab元胞自动机模拟SEIR传播模型【含Matlab源码 2156期】
- 基于Labview与单片机的多通道温度采集系统设计
- linux内核将新驱动添加到menuconfig菜单
- coursera 助学金申请模版
- 【雅思大作文考官范文】——第十一篇:'homework' essay
- Self-Supervised Learning 自监督学习中Pretext task的理解
- 免密钥登录脚本(转载)
- vant框架van-field
- 看考研视频如何屏蔽键盘(锁定键盘)
- 服务器容器化-docker(全)
- 像李云迪那样爱 IT界那些“情”
热门文章
- matlab 调制识别,调制方式识别仿真
- 华为hwics格式产品文档打开方式
- RHCSA红帽认证考试题库--上午考试题
- colorui 使用iconfont图标
- 计算机辅助设计主要学什么,计算机辅助设计教学大纲
- 计算机大赛获奖团队采访,坚持勤奋铸就无悔青春——全国大学生数学建模大赛一等奖获奖者专访...
- 初期学习K60遇到的常见问题及解决办法
- 【Luat-air105】8.1 camera拍照
- 【perl脚本】单行循环正则匹配
- python代码怎么保存为pdf_python把ipynb文件转换成pdf文件过程详解