CN109344296A - 实现Redis的HASH键的域生命周期控制方法、系统、服务器及存储介质 - Google Patents

实现Redis的HASH键的域生命周期控制方法、系统、服务器及存储介质 Download PDF

Info

Publication number
CN109344296A
CN109344296A CN201810999181.1A CN201810999181A CN109344296A CN 109344296 A CN109344296 A CN 109344296A CN 201810999181 A CN201810999181 A CN 201810999181A CN 109344296 A CN109344296 A CN 109344296A
Authority
CN
China
Prior art keywords
hash
domain
key
data structure
value
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201810999181.1A
Other languages
English (en)
Other versions
CN109344296B (zh
Inventor
张振铎
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Wuhan Douyu Network Technology Co Ltd
Original Assignee
Wuhan Douyu Network Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Wuhan Douyu Network Technology Co Ltd filed Critical Wuhan Douyu Network Technology Co Ltd
Priority to CN201810999181.1A priority Critical patent/CN109344296B/zh
Publication of CN109344296A publication Critical patent/CN109344296A/zh
Application granted granted Critical
Publication of CN109344296B publication Critical patent/CN109344296B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1458Management of the backup or restore process

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明涉及一种实现Redis的HASH键的域生命周期控制方法、系统、服务器及存储介质,本方法结合Redis中LRU活跃属性和定时任务,实现Redis的Hash类型的域生命周期控制,误差在秒级别的实现了Hash的域的自动删除,使得业务能够使用到Hash类型带来的存储结构的遍历的同时,又可以控制Hash类型的域的生命周期。

Description

实现Redis的HASH键的域生命周期控制方法、系统、服务器及 存储介质
技术领域
本发明涉及软件工程领域,具体涉及一种实现Redis的HASH键的域生命周期控制方法、系统、服务器及存储介质。
背景技术
在软件工程领域,内存数据库Redis被广泛使用,Redis的高IO 处理能力和存储读取能力,被广泛用户数据缓存和消息队列。Redis 中有5种类型的键,string类型,hash类型,list类型,set类型和zset类型。Redis为键提供了生命周期的概念,即使用方可以为键设置生存时间,过了生存时间后,键自动被删除。这个特性也被广泛运用在各种类型的业务中,同时也释放了Redis的内存空间。
Redis中的Hash结构由于类似对象结构,即拥有域和值,被广泛使用,但是在使用中发现,有很多业务场景有对Hash的域进行生命周期的控制的需求,即要求Hash的域能实现自动过期删除。但是 Redis并没有提供这种特性,Redis本身仅仅提供了针对键级别的生命周期控制。而在实际使用中,因为String类型的键具有声明周期控制,所以大多数开发人员不采用Hash类型而采用String替代Hash,但是无法使用Hash的对象关系带来的便利。
发明内容
鉴于现有技术存在的问题,本发明的目的是提供一种实现Redis 的HASH键的域生命周期控制方法、系统、服务器及存储介质,结合 Redis键的对象活跃属性和定时任务,实现Redis的Hash类型的域生命周期控制,误差在秒级别的实现了Hash的域的自动删除,使得业务能够使用到Hash类型带来的存储结构的遍历的同时,又可以控制Hash类型的域的生命周期。
为了实现上述目的,本发明采用的技术方案为一种,所述方法包括以下步骤:
S1、在Redis中使用第一Hash数据结构,所述第一Hash数据结构用于存储数据,并为第一Hash数据结构的Key值备份第二Hash数据结构的Key值,所述备份的第二Hash数据结构的Key值用于存储第一Hash数据结构中期望实现生命周期控制的域;
S2、将所述第一Hash数据结构的Key值放置于Set数据结构中,用于统一管理;
S3、根据Redis提供的Object内存结构的LRU活跃属性,扫描步骤S2中存放第一Hash数据结构的Key值的Set数据结构,遍历 Set数据结构即对存储于Set中每个数据进行访问并找出根据定时任务设定时间内活跃的第一Hash数据结构的Key值,然后遍历所述活跃的第一Hash数据结构的Key值对应的备份第二Hash数据结构的 Key值,同时遍历备份第二Hash数据结构的活跃的Key值的每个域,用于判断是否到了域自动过期的时间,如果所述域的当前时间大于等于域预设的过期时间,则删除备份第二Hash数据和第一Hash数据的对应域;如果没有到达域预设的过期时间,则继续遍历所述备份第二 Hash数据结构中另外Key值的每个域。
在上述技术方案中,步骤S1中的第一Hash数据结构包含Key值、多个域以及每个域对应的Value,若第一Hash数据结构的Key值为m y_hash_key,使用中则设置了第一name域,并设定第一Value值,设置了第一salary域,同时设定第二Value值,期望所述第一Sala ry域能够实现在指定的时间过期,设置了备份第二Hash数据结构的 Key值my_hash_key_expire_time,所述备份第二Hash数据结构的K ey值中存储的是所述my_hash_key键中期望实现生命周期控制的域,同时my_hash_key_expire_time键中有第二salary域,设定值为unix时间戳,这个时间戳即是期望第一Hash数据中Key值所述my_ha sh_key中的第一salary域过期的时间,若没有对第一name域做生命周期管理,即不期望该域自动过期。
在上述技术方案中,所述步骤S3中所述定时任务包括第一定时任务每5秒遍历所述Set数据结构和第二定时任务每15秒遍历所述 Set数据结构。
在上述技术方案中,所述第一定时任务中并不用扫描第一Hash 数据结构中每个Key值,只扫描最近5秒活跃的Key值;
第二定时任务中需要扫描第一Hash数据结构中的全部Key值。
本发明还公开一种实现Redis的HASH键的域生命周期控制系统,所述系统包括备份模块、控制模块、定时扫描模块;
备份模块,用于在Redis中使用第一Hash数据结构,所述第一 Hash数据结构用于存储数据,并为第一Hash数据结构的Key值备份第二Hash数据结构的Key值,所述备份的第二Hash数据结构的Key 值用于存储第一Hash数据结构中期望实现生命周期控制的域;
控制模块,用于将所述第一Hash数据结构的Key值放置于Set 数据结构中,用于统一管理;
定时扫描模块,用于根据Redis提供的Object内存结构的LRU 活跃属性,扫描步骤S2中存放第一Hash数据结构的Key值的Set数据结构,遍历Set数据结构即对存储于Set中每个数据进行访问并找出根据定时任务设定时间内活跃的第一Hash数据结构的Key值,然后遍历所述活跃的第一Hash数据结构的Key值对应的备份第二Hash 数据结构的Key值,同时遍历备份第二Hash数据结构的活跃的Key 值的每个域,用于判断是否到了域自动过期的时间,如果所述域的当前时间大于等于域预设的过期时间,则删除备份第二Hash数据和第一Hash数据的对应域;如果没有到达域预设的过期时间,则继续遍历所述备份第二Hash数据结构中另外Key值的每个域。在上述技术方案中,所述备份模块中的第一Hash数据结构包含Key值、多个域以及每个域对应的Value,若第一Hash数据结构的Key值为 my_hash_key,使用中则设置了第一name域,并设定第一Value值,设置了第一salary域,同时设定第二Value值,期望所述第一Salary 域能够实现在指定的时间过期,设置了备份第二Hash数据结构的Key 值my_hash_key_expire_time,所述备份第二Hash数据结构的Key 值中存储的是所述my_hash_key键中期望实现生命周期控制的域,同时my_hash_key_expire_time键中有第二salary域,设定值为unix 时间戳,这个时间戳即是期望第一Hash数据中Key值所述 my_hash_key中的第一salary域过期的时间,若没有对第一name域做生命周期管理,即不期望该域自动过期。在上述技术方案中,定时扫描模块中所述定时任务包括第一定时任务每5秒遍历所述Set数据结构和第二定时任务每15秒遍历所述Set数据结构。
在上述技术方案中,所述第一定时任务中并不用扫描第一Hash 数据结构中每个Key值,只扫描最近5秒活跃的Key值;
第二定时任务中需要扫描第一Hash数据结构中的全部Key值。
本发明还公开一种实现Redis的HASH键的域生命周期控制系统的服务器,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时上述任一项所述一种实现Redis的HASH键的域生命周期控制方法的步骤。
本发明还公开一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述任一项所述一种实现Redis的HASH键的域生命周期控制方法的步骤。
本发明一种实现Redis的HASH键的域生命周期控制方法、系统、服务器及存储介质,具有以下有益效果:结合Redis的Object内存结构的LRU的活跃属性结合两种定时任务算法,实现指定域在秒级别的误差自动删除,使得业务能够使用到hash类型带来的存储结构的便利的同时,又可以控制Hash类型的域的生命周期。设置2种定时任务算法,策略处理相互结合,节约了服务器计算资源,同时降低了 Redis的计算开销和维护开销,系统可维护性和可用性较高。
附图说明
图1为本发明实施例一提供的一种实现Redis的HASH键的域生命周期控制方法的流程图;
图2本发明实施例二提供一种实现Redis的HASH键的域生命周期控制系统模块图;
图3为本发明实施例三提供的服务器的结构示意图。
具体实施方式
本发明提供一种实现Redis的HASH键的域生命周期控制方法、系统、服务器及存储介质,基于Redis的键的对象活跃属性和2种不同策略的轻量级定时任务,针对每个Hash的数据结构,存储所述Hash 数据Key值的类似的结构,域的值为期望的键的过期时间,实现对Hash类型的域的生命周期控制。
为使得本发明的发明目的、特征、优点能够更加的明显和易懂,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,下面所描述的实施例仅仅是本发明一部分实施例,而非全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
本发明如图1所示实施例一提供一种实现Redis的HASH键的域生命周期控制方法,所述方法包括以下步骤,如图1所示:
S1、在Redis中使用第一Hash数据结构,所述第一Hash数据结构用于存储数据,并为第一Hash数据结构的Key值备份第二Hash数据结构的Key值,所述备份的第二Hash数据结构的Key值用于存储第一Hash数据结构中期望实现生命周期控制的域;
可选的,步骤S1伪代码表示为:
HSET my_hash_key name Mike
HSET my_hash_key salary 10
HSET my_hash_key_expire_time salary 1520125476
其中,第一Hash数据结构包含Key值、多个域以及每个域对应的Value,若第一Hash数据结构的Key值为my_hash_key,使用中则设置了第一name域,并设定第一Value值为Mike,设置了第一sal ary域,同时设定第二Value值为10,同时期望所述第一Salary域能够实现在指定的时间过期,设置了备份第二Hash数据结构的Key 值my_hash_key_expire_time,所述备份第二Hash数据结构的Key 值中存储的是所述my_hash_key键中期望实现生命周期控制的域,同时my_hash_key_expire_time键中有第二salary域,设定值为unix 时间戳,这个时间戳即是期望第一Hash数据中Key值所述my_hash_ key中的第一salary域过期的时间,若没有对第一name域做生命周期管理,即不期望该域自动过期。
所述Hash是(散列、杂凑)函数,是将任意长度的数据映射到有限长度的域上。也就是对一串数据m进行杂糅,输出另一段固定长度的数据h,作为这段数据的特征(指纹)。Hash表属于一种存储结构,最常用的存储结构是顺序存储结构和链式存储结构,这两种结构的共同特征就是元素与元素之间存在映射关系。而Hash表的元素之间相互独立。Hash表具体的实现方式是给定一个参数,称为“键”。参数的类型可以是任何类型的数据,诸如字符、字符串、整型等等。然后根据该参数通过哈希算法计算生成的值来定位“键”对应的元素的存储地址。
Redis中的Hash是一个String类型的field和value的映射表, Hash适合用于存储对象。
S2、将所述第一Hash数据结构的Key值放置于Set数据结构中,用于统一管理;
Redis的Set是String类型的无序集合,最大可以包含(2的3 2次方-1)个元素。Set数据结构的是通过Hash表实现,每个集合可存储40多亿个成员。
S3、根据Redis提供的Object内存结构的LRU活跃属性,扫描步骤S2中存放第一Hash数据结构的Key值的Set数据结构,遍历 Set数据结构即对存储于Set中每个数据进行访问并找出根据定时任务设定时间内活跃的第一Hash数据结构的Key值,然后遍历所述活跃的第一Hash数据结构的Key值对应的备份第二Hash数据结构的 Key值,同时遍历备份第二Hash数据结构的活跃的Key值的每个域,用于判断是否到了域自动过期的时间,如果所述域的当前时间大于等于域预设的过期时间,则删除备份第二Hash数据和第一Hash数据的对应域;如果没有到达域预设的过期时间,则继续遍历所述备份第二 Hash数据结构中另外Key值的每个域。
所述LRU算法作为内存管理的一种有效算法,其含义是在内存有限的情况下,当内存容量不足时,为了保证程序的运行,这时就不得不淘汰内存中的一些对象,释放这些对象占用的空间,选择淘汰的对象是选择最近一段时间内,最久未使用的对象将其淘汰。
可选的,所述步骤S3中所述定时任务包括第一定时任务每5秒遍历所述Set数据结构和第二定时任务每15秒遍历所述Set数据结构。
其中,Hash键即为Hash结构结构的Key值。
具体的,第一个定时任务每5秒(根据系统实际需要可以调整) 执行1次,第二个定时任务每15秒(根据系统实际需要可以调整) 执行1次。第一个定时任务利用Redis提供的object内存结构的LRU 活跃属性,扫描存放第一Hash数据结构的Key值的Set数据结构,遍历set并找到最近5秒钟活跃的键,然后遍历该键的备份键,遍历备份键的每个域,看是否到了域自动过期的时间,如果当前时间大于等于域过期时间,则删除备份第二hash键和第一hash键中该域;如果没有到达域过期时间,则继续遍历备份第二hash键的下个键。第一个定时任务只扫描最近5秒钟活跃的键,第二定时任务则不同,定时任务2扫描第二步中存放第一Hash数据结构的Key值的Set数据结构,遍历集合中每个hash键的备份键,扫描备份键的每个域,如果到达过期时间则删除备份第二hash键和第一hash键中该域;如果没有到达域过期时间,则继续遍历备份第二hash键下个键。
可选的,所述第一定时任务中并不用扫描第一Hash数据结构中每个Key值,只扫描最近5秒活跃的Key值;
第二定时任务中需要扫描第一Hash数据中的全部Key值。
具体的,第一定时任务利用了Redis的Object内存结构的LRU 的活跃属性,即扫描所有hash键集合的时候,并不是每个键都去扫描它的备份hash键进行生命周期控制,而且只扫描最近5秒活跃(有读写操作)的键。而第二定时任务是扫描全量的Hash键,进行Hash键的声明周期的控制。目的是通过第二定时任务实现对访问频繁的键及时进行域的生命周期的控制,而访问不频繁的键不进行处理,这样节约了服务器计算资源,同时在保证业务需要的同时,对必要的hash 键进行了生命周期控制。第二定时任务是全量扫描,对所有的键即包括近期不活跃(没有读写操作)的键进行生命周期控制,这样保证了数据的完整性和业务的要求。设置第二定时任务的执行周期小于第一定时任务,节约了服务器计算资源,同时降低了Redis的计算开销和维护开销。伪代码如下:
第一定时任务:
every 5 second do
{
//扫描包含所有hash键的集合
List<key>list=scan keyset;
//遍历每个key
for(each key){
if(OBJECT IDLETIME key<5s){
//该key最近5秒活跃
//扫描该key的备份key
List<field>fields=scan key_expire_time;
for(each field){
if(HGET key_expire_time field<=now_unix_time){
//备份键中该域的过期时间小于等于当前时间
//删除备份hash键和原hash键中该域
HDEL key_expire_time field
HDEL key field
}
}
}
}
}
第二定时任务:
every 15 second do
{
//扫描包含所有hash键的集合
List<key>list=scan keyset;
for(each key){
//不判断是否活跃,扫描所有key的备份key
List<field>fields=scan key_expire_time;
for(each field){
if(HGET key_expire_time field<=now_unix_time){
//备份键中该域的过期时间小于等于当前时间
//删除备份hash键和原hash键中该域
HDEL key_expire_time field
HDEL key field
}
}
}
}
本发明实施例二如图2所示提供一种实现Redis的HASH键的域生命周期控制系统,所述系统包括备份模块、控制模块、定时扫描模块;
备份模块,用于在Redis中使用第一Hash数据结构,所述第一 Hash数据结构用于存储数据,并为第一Hash数据结构的Key值备份第二Hash数据结构的Key值,所述备份的第二Hash数据结构的Key 值用于存储第一Hash数据结构中期望实现生命周期控制的域;
控制模块,用于将所述第一Hash数据结构的Key值放置于Set 数据结构中,用于统一管理;
定时扫描模块,用于根据Redis提供的Object内存结构的LRU 活跃属性,扫描步骤S2中存放第一Hash数据结构的Key值的Set数据结构,遍历Set数据结构即对存储于Set中每个数据进行访问并找出根据定时任务设定时间内活跃的第一Hash数据结构的Key值,然后遍历所述活跃的第一Hash数据结构的Key值对应的备份第二Hash 数据结构的Key值,同时遍历备份第二Hash数据结构的活跃的Key 值的每个域,用于判断是否到了域自动过期的时间,如果所述域的当前时间大于等于域预设的过期时间,则删除备份第二Hash数据和第一Hash数据的对应域;如果没有到达域预设的过期时间,则继续遍历所述备份第二Hash数据结构中另外Key值的每个域。可选的,所述备份模块中伪代码表示为:
HSET my_hash_key name Mike
HSET my_hash_key salary 10
HSET my_hash_key_expire_time salary 1520125476
其中,第一Hash数据结构包含Key值、多个域以及每个域对应的Value,若第一Hash数据结构的Key值为my_hash_key,使用中则设置了第一name域,并设定第一Value值为Mike,设置了第一sal ary域,同时设定第二Value值为10,同时期望所述第一Salary域能够实现在指定的时间过期,设置了备份第二Hash数据结构的Key 值my_hash_key_expire_time,所述备份第二Hash数据结构的Key 值中存储的是所述my_hash_key键中期望实现生命周期控制的域,同时my_hash_key_expire_time键中有第二salary域,设定值为unix 时间戳,这个时间戳即是期望第一Hash数据中Key值所述my_hash_ key中的第一salary域过期的时间,若没有对第一name域做生命周期管理,即不期望该域自动过期。可选的,定时扫描模块中所述定时任务包括第一定时任务每5秒遍历所述Set数据结构和第二定时任务每15秒遍历所述Set数据结构。
可选的,所述第一定时任务中并不用扫描第一Hash数据结构中每个Key值,只扫描最近5秒活跃的Key值;
第二定时任务中需要扫描第一Hash数据结构中的全部Key值。
本发明实施例三如图3所示提供一种实现Redis的HASH键的域生命周期控制系统的服务器结构示意图,所述实施例的服务器包括:处理器30、存储器31以及存储在所述存储器31中并可在所述处理器30上运行的计算机程序32。所述处理器30执行所述计算机程序32时实现上述各方法实施例中的步骤,所述处理器30执行所述计算机程序32时实现上述装置实施例中各模块的功能。
所述一种实现Redis的HASH键的域生命周期控制系统的服务器可以是桌上型计算机、笔记本、掌上电脑及云端服务器等计算设备,所述一种实现Redis的HASH键的域生命周期控制系统的服务器可包括,但不限于,处理器30、存储器31。图3仅仅是对此服务器的示例,并不构成对此服务器的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件,所述一种实现Redis的HASH键的域生命周期控制系统的服务器还可以包括输入输出设备33、显示设备34等。
所述处理器30可以是中央处理单元,还可以是其他通用处理器、数字信号处理器、专用集成电路、现成可编程门阵列或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
所述存储器31可以是所述一种实现Redis的HASH键的域生命周期控制系统的服务器的内部存储单元、硬盘或内存。所述存储器31 也可以是所述服务器的外部存储设备,或配备的插接式硬盘,智能存储卡,安全数字卡,闪存卡等。
进一步地,所述存储器31还可以既包括所述服务器的内部存储单元也包括外部存储设备。所述存储器31用于存储所述计算机程序以及所述电子设备所需的其他程序和数据。所述存储器31还可以用于暂时地存储已经输出或者将要输出的数据。
所述的输入输出设备33可用于接收输入的数字或字符信息,具体的,输入输出设备33还可以包括但不限于键盘、鼠标、操作杆等中的一种和多种。
所述的显示设备34可用于显示由用户输入的信息或提供给用户信息以及终端的各种菜单,显示设备34可包括显示面板,可选的,可采用液晶显示器。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各实施例的模块、方法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实现上述实施例方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,RandomAccess Memory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。
以上所述,以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

Claims (10)

1.一种实现Redis的HASH键的域生命周期控制方法,其特征在于,所述方法包括以下步骤:
S1、在Redis中使用第一Hash数据结构,所述第一Hash数据结构用于存储数据,并为第一Hash数据结构的Key值备份第二Hash数据结构的Key值,所述备份的第二Hash数据结构的Key值用于存储第一Hash数据结构中期望实现生命周期控制的域;
S2、将所述第一Hash数据结构的Key值放置于Set数据结构中,用于统一管理;
S3、根据Redis提供的Object内存结构的LRU活跃属性,扫描步骤S2中存放第一Hash数据结构的Key值的Set数据结构,遍历Set数据结构即对存储于Set中每个数据进行访问并找出根据定时任务设定时间内活跃的第一Hash数据结构的Key值,然后遍历所述活跃的第一Hash数据结构的Key值对应的备份第二Hash数据结构的Key值,同时遍历备份第二Hash数据结构的活跃的Key值的每个域,用于判断是否到了域自动过期的时间,如果所述域的当前时间大于等于域预设的过期时间,则删除备份第二Hash数据和第一Hash数据的对应域;如果没有到达域预设的过期时间,则继续遍历所述备份第二Hash数据结构中另外Key值的每个域。
2.根据权利要求1所述一种实现Redis的HASH键的域生命周期控制方法,其特征在于,步骤S1中的第一Hash数据结构包含Key值、多个域以及每个域对应的Value,若第一Hash数据结构的Key值为my_hash_key,使用中则设置了第一name域,并设定第一Value值,设置了第一salary域,同时设定第二Value值,期望所述第一Salary域能够实现在指定的时间过期,设置了备份第二Hash数据结构的Key值my_hash_key_expire_time,所述备份第二Hash数据结构的Key值中存储的是所述my_hash_key键中期望实现生命周期控制的域,同时my_hash_key_expire_time键中有第二salary域,设定值为unix时间戳,这个时间戳即是期望第一Hash数据中Key值所述my_hash_key中的第一salary域过期的时间,若没有对第一name域做生命周期管理,即不期望该域自动过期。
3.根据权利要求1所述一种实现Redis的HASH键的域生命周期控制方法,其特征在于,所述步骤S3中所述定时任务包括第一定时任务每5秒遍历所述Set数据结构和第二定时任务每15秒遍历所述Set数据结构。
4.根据权利要求3所述一种实现Redis的HASH键的域生命周期控制方法,其特征在于,所述第一定时任务中并不用扫描第一Hash数据结构中每个Key值,只扫描最近5秒活跃的Key值;
第二定时任务中需要扫描第一Hash数据结构中的全部Key值。
5.一种实现Redis的HASH键的域生命周期控制系统,其特征在于,所述系统包括备份模块、控制模块、定时扫描模块;
备份模块,用于在Redis中使用第一Hash数据结构,所述第一Hash数据结构用于存储数据,并为第一Hash数据结构的Key值备份第二Hash数据结构的Key值,所述备份的第二Hash数据结构的Key值用于存储第一Hash数据结构中期望实现生命周期控制的域;
控制模块,用于将所述第一Hash数据结构的Key值放置于Set数据结构中,用于统一管理;
定时扫描模块,用于根据Redis提供的Object内存结构的LRU活跃属性,扫描步骤S2中存放第一Hash数据结构的Key值的Set数据结构,遍历Set数据结构即对存储于Set中每个数据进行访问并找出根据定时任务设定时间内活跃的第一Hash数据结构的Key值,然后遍历所述活跃的第一Hash数据结构的Key值对应的备份第二Hash数据结构的Key值,同时遍历备份第二Hash数据结构的活跃的Key值的每个域,用于判断是否到了域自动过期的时间,如果所述域的当前时间大于等于域预设的过期时间,则删除备份第二Hash数据和第一Hash数据的对应域;如果没有到达域预设的过期时间,则继续遍历所述备份第二Hash数据结构中另外Key值的每个域。
6.根据权利要求5所述一种实现Redis的HASH键的域生命周期控制系统,其特征在于,所述备份模块中第一Hash数据结构包含Key值、多个域以及每个域对应的Value,若第一Hash数据结构的Key值为my_hash_key,使用中则设置了第一name域,并设定第一Value值,设置了第一salary域,同时设定第二Value值,期望所述第一Salary域能够实现在指定的时间过期,设置了备份第二Hash数据结构的Key值my_hash_key_expire_time,所述备份第二Hash数据结构的Key值中存储的是所述my_hash_key键中期望实现生命周期控制的域,同时my_hash_key_expire_time键中有第二salary域,设定值为unix时间戳,这个时间戳即是期望第一Hash数据中Key值所述my_hash_key中的第一salary域过期的时间,若没有对第一name域做生命周期管理,即不期望该域自动过期。
7.根据权利要求5所述一种实现Redis的HASH键的域生命周期控制系统,其特征在于,定时扫描模块中所述定时任务包括第一定时任务每5秒遍历所述Set数据结构和第二定时任务每15秒遍历所述Set数据结构。
8.根据权利要求7所述一种实现Redis的HASH键的域生命周期控制系统,其特征在于,所述第一定时任务中并不用扫描第一Hash数据结构中每个Key值,只扫描最近5秒活跃的Key值;
第二定时任务中需要扫描第一Hash数据结构中的全部Key值。
9.一种实现Redis的HASH键的域生命周期控制系统的服务器,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1至4中任一项所述一种实现Redis的HASH键的域生命周期控制方法的步骤。
10.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至4中任一项所述一种实现Redis的HASH键的域生命周期控制方法的步骤。
CN201810999181.1A 2018-08-30 2018-08-30 实现Redis的HASH键的域生命周期控制方法、系统、服务器及存储介质 Active CN109344296B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810999181.1A CN109344296B (zh) 2018-08-30 2018-08-30 实现Redis的HASH键的域生命周期控制方法、系统、服务器及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810999181.1A CN109344296B (zh) 2018-08-30 2018-08-30 实现Redis的HASH键的域生命周期控制方法、系统、服务器及存储介质

Publications (2)

Publication Number Publication Date
CN109344296A true CN109344296A (zh) 2019-02-15
CN109344296B CN109344296B (zh) 2021-11-26

Family

ID=65292195

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810999181.1A Active CN109344296B (zh) 2018-08-30 2018-08-30 实现Redis的HASH键的域生命周期控制方法、系统、服务器及存储介质

Country Status (1)

Country Link
CN (1) CN109344296B (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109800246A (zh) * 2019-02-21 2019-05-24 北京阿可科技有限公司 一种面向海量规模kv缓存的数据生命周期管理方法
CN110750566A (zh) * 2019-10-24 2020-02-04 广州欢聊网络科技有限公司 数据处理方法、装置、缓存系统及缓存管理平台
CN110781190A (zh) * 2019-10-29 2020-02-11 北京金和网络股份有限公司 对Redis hash的每个field进行过期管理的方法
CN113297192A (zh) * 2021-05-31 2021-08-24 上海艾麒信息科技股份有限公司 针对redis hash类型数据控制field过期的方法及系统

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150177989A1 (en) * 2013-12-20 2015-06-25 Keith Lowery Memory packet, data structure and hierarchy within a memory appliance for accessing memory
CN105677736A (zh) * 2015-12-29 2016-06-15 曙光信息产业(北京)有限公司 一种增加、删除服务器节点的方法及装置
CN106959928A (zh) * 2017-03-23 2017-07-18 华中科技大学 一种基于多级缓存结构的流式数据实时处理方法及系统

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150177989A1 (en) * 2013-12-20 2015-06-25 Keith Lowery Memory packet, data structure and hierarchy within a memory appliance for accessing memory
CN105677736A (zh) * 2015-12-29 2016-06-15 曙光信息产业(北京)有限公司 一种增加、删除服务器节点的方法及装置
CN106959928A (zh) * 2017-03-23 2017-07-18 华中科技大学 一种基于多级缓存结构的流式数据实时处理方法及系统

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
李海莉等: "基于Hash-LRU的超时流管理算法", 《信息工程大学学报》 *

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109800246A (zh) * 2019-02-21 2019-05-24 北京阿可科技有限公司 一种面向海量规模kv缓存的数据生命周期管理方法
CN110750566A (zh) * 2019-10-24 2020-02-04 广州欢聊网络科技有限公司 数据处理方法、装置、缓存系统及缓存管理平台
CN110781190A (zh) * 2019-10-29 2020-02-11 北京金和网络股份有限公司 对Redis hash的每个field进行过期管理的方法
CN113297192A (zh) * 2021-05-31 2021-08-24 上海艾麒信息科技股份有限公司 针对redis hash类型数据控制field过期的方法及系统

Also Published As

Publication number Publication date
CN109344296B (zh) 2021-11-26

Similar Documents

Publication Publication Date Title
CN109344296A (zh) 实现Redis的HASH键的域生命周期控制方法、系统、服务器及存储介质
US11580441B2 (en) Model training method and apparatus
Abourezq et al. Database-as-a-service for big data: An overview
US20170212781A1 (en) Parallel execution of blockchain transactions
US7539689B2 (en) Bundling database
US9442965B2 (en) System and method for efficient representation of dynamic ranges of numeric values
US20210081358A1 (en) Background dataset maintenance
CN109067841A (zh) 基于ZooKeeper的服务限流方法、系统、服务器及存储介质
US9104567B2 (en) Memory-leak identification
CN110442580A (zh) 一种区块链状态数据存储方法、设备和存储介质
CN109614411B (zh) 数据存储方法、设备和存储介质
CN107403012A (zh) 一种数据交换方法及装置
US8407255B1 (en) Method and apparatus for exploiting master-detail data relationships to enhance searching operations
US9754319B2 (en) Source document framework for accounting systems
CN111522840A (zh) 标签的配置方法、装置、设备及计算机可读存储介质
US20170316067A1 (en) Transforming time series data points from concurrent processes
Tseng et al. A successful application of big data storage techniques implemented to criminal investigation for telecom
CN109582476A (zh) 数据处理方法、装置及系统
JP2017533518A (ja) データベースデータ分散管理
CN110019113B (zh) 一种数据库的业务处理方法及数据库服务器
Keswani et al. Enhanced approach to attain competent Big Data pre-processing
CN115544096B (zh) 数据查询方法、装置、计算机设备及存储介质
Hsu et al. Convergent causal consistency for social media posts
US20220138338A1 (en) Data replacement apparatus, data replacement method, and program
US20240202211A1 (en) State rebalancing in structured streaming

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant