数据类型-sorted_set 实现时效性任务管理| 学习笔记

简介: 快速学习数据类型-sorted_set 实现时效性任务管理

开发者学堂课程【Redis 入门到精通(基础篇)数据类型-sorted_set 实现时效性任务管理】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/764/detail/13393


数据类型-sorted_set 实现时效性任务管理

 

内容介绍

一、Sorted_set 类型数据操作的注意事项

二、sorted_set 类型应用场景

三、Tips14

 

一、Sorted_set 类型数据操作的注意事项

●score 保存的数据存储空间是64位,如果是整数范围是-9007199254740992-9007199254740992

●score 保存的数据也可以是一个双精度的 double 值,基于双精度浮点数的特征,可能会丢失精度,使用时候要慎重

●sorted_set 底层存储还是基于 set 结构的,因此数据不能重复,如果重复添加相同的数据,score 值将被反复覆盖,保留最后一次修改的结果

这是一个数字,之前操作的是整数,但是也可以是小数,整数是有范围的,要有一定的风险意识,如果要用小数,这是一个双精度double值,意味着计算机对一个小数存在有可能无法描述的情况,这时如果需要排序,那么就会存在问题,出现不精准的情况,有时候会丢掉这个精度值,所以要慎重使用,set放置数据,放入重复数据,会输入失败,但是 sorted_set 则是会覆盖掉。

接下来实验一下,zadd test1 11 aa,然后 zrange test1 0 -1 withscores,得到数据,然后进行修改,zadd test1 22 aa,重复操作,zadd test1 33 aa,得到最后覆盖为aa 33。

 

二、sorted_set 类型应用场景

业务场景
基础服务+增值服务类网站会设定各位会员的试用,让用户充分体验会员优势。例如观影试用VIP、游戏VIP体验、云盘下载体验VIP、数据查看体验VIP。

当VIP体验到期后,如果有效管理此类信息。即便对于正式VIP用户也存在对应的管理方式。

网站会定期开启投票、讨论,限时进行,逾期作废。如何有效管理此类过期信息。

有些场景会进行增值服务,在常规情况增加更多的便捷优惠效果,各种长期短期的会员等的商品,到期后怎样管理,这个就需要服务器进行管理,这个就需要我们在服务器进行一些设计。

解决方案
●对于基于时间线限定的任务处理,将处理时间记录为score值,利用排序功能区分处理的先后顺序

●记录下一个要处理的时间,当到期后处理对应任务,移除redis中的记录,并记录下一个要处理的时间

●当新任务加入时,判定并更新当前下一个要处理的任务时间
●为提升sorted_set的性能,通常将任务根据特征存储成若干个sorted_set.例如1小时内,1天内,周内,月内,季内,年度等,操作时逐级提升,将即将操作的若干个任务纳入到1小时内处理的队列中

●获取当前系统时间

Time

对每一个任务设定一个时间线,记录一个score值,然后利用排序功能排好,无论时间的长短,都可以拿到一个根据时间长短已经排好序的处理的列表,然后到达了时间进行处理,如果你的记录不在队列中,那么就无法使用特殊功能,然后具体操作就是对于我们现在的,

添加zadd ts 1509802345 uid:001,zadd ts 1509802390 uid:007,zadd ts 1510384284 uid:888,这样就有一个天然的排序,然后进行排序,zrange ts 0 -1 withscores,就可以看出来具体的排序情况,然后对用户进行提醒,并且在到达时间后就可以将这个数据挪出来,然后下一个用户就会自动上移,每次提醒即将到期的用户。

然后我们使用一个代码,time,进行查看时间,每使用一次,就可以看到这个存在的时间,一共两行,第一行是秒,下面就是比秒还要小的单位,然后通过时间的变化,我们就可以做到这种时间上面的控制是否继续提供某一项服务。

 

三、Tips14

Redis 应用于定时任务执行顺序管理或者任务过期管理。

相关文章
|
5天前
|
SQL NoSQL Java
Redis数据类型 Hash Set Zset Bitmap HyperLogLog GEO
Redis数据类型 Hash Set Zset Bitmap HyperLogLog GEO
18 0
|
5天前
|
存储 C++ 容器
set容器一自定义数据类型指定排序规则讲解
set容器一自定义数据类型指定排序规则讲解
25 1
|
5天前
|
存储 NoSQL Java
【Redis】1、学习 Redis 的五大基本数据类型【String、Hash、List、Set、SortedSet】
【Redis】1、学习 Redis 的五大基本数据类型【String、Hash、List、Set、SortedSet】
60 0
|
5天前
|
存储 JavaScript
【ES6系列第二篇】适用JS初学者的Set对象和Map对象学习笔记
【ES6系列第二篇】适用JS初学者的Set对象和Map对象学习笔记
26 0
|
9月前
|
存储 NoSQL Redis
无序集合的利器:深入了解 Redis 的 Set 数据类型
在现代的应用程序中,对于处理独特值、快速判断成员关系等需求,无序集合是一种重要的数据结构。Redis,作为一款高性能的内存数据库,提供了多种数据类型来满足不同的需求。在本文中,我们将着重介绍 Redis 的 Set 数据类型,探讨其特性、用法以及在实际应用中的优势。
125 0
|
5天前
|
NoSQL Redis 索引
⑤【Sorted Set】Redis常用数据类型: ZSet [使用手册]
⑤【Sorted Set】Redis常用数据类型: ZSet [使用手册]
113 0
|
5天前
|
NoSQL Redis
④【Set】Redis常用数据类型: Set [使用手册]
④【Set】Redis常用数据类型: Set [使用手册]
44 0
|
7月前
|
存储 索引 Python
python-tuple(元组)-set(集合)-list(列表)-dictionary(字典)和Python数据类型转换函数
python-tuple(元组)-set(集合)-list(列表)-dictionary(字典)和Python数据类型转换函数
|
8月前
|
存储 NoSQL 搜索推荐
【Redis从头学-7】Redis中的Set数据类型实战场景之用户画像去重、共同关注、专属粉丝
【Redis从头学-7】Redis中的Set数据类型实战场景之用户画像去重、共同关注、专属粉丝
184 0
|
9月前
|
前端开发
前端学习笔记202305学习笔记第二十五天-什么是对象结构 set map之5
前端学习笔记202305学习笔记第二十五天-什么是对象结构 set map之5
34 0