CN109344296B - 实现Redis的HASH键的域生命周期控制方法、系统、服务器及存储介质 - Google Patents
实现Redis的HASH键的域生命周期控制方法、系统、服务器及存储介质 Download PDFInfo
- Publication number
- CN109344296B CN109344296B CN201810999181.1A CN201810999181A CN109344296B CN 109344296 B CN109344296 B CN 109344296B CN 201810999181 A CN201810999181 A CN 201810999181A CN 109344296 B CN109344296 B CN 109344296B
- Authority
- CN
- China
- Prior art keywords
- hash
- key
- data structure
- domain
- hash data
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1446—Point-in-time backing up or restoration of persistent data
- G06F11/1458—Management 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被广泛使用,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值为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域做生命周期管理,即不期望该域自动过期。
在上述技术方案中,所述步骤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的32次方-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的计算开销和维护开销。伪代码如下:
第二定时任务:
本发明实施例二如图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活跃属性,扫描控制模块中存放第一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键的域生命周期控制方法的步骤。
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 CN109344296A (zh) | 2019-02-15 |
CN109344296B true 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) |
Families Citing this family (4)
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进行过期管理的方法 |
CN113297192B (zh) * | 2021-05-31 | 2023-03-14 | 上海艾麒信息科技股份有限公司 | 针对redis hash类型数据控制field过期的方法及系统 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105677736A (zh) * | 2015-12-29 | 2016-06-15 | 曙光信息产业(北京)有限公司 | 一种增加、删除服务器节点的方法及装置 |
CN106959928A (zh) * | 2017-03-23 | 2017-07-18 | 华中科技大学 | 一种基于多级缓存结构的流式数据实时处理方法及系统 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11132328B2 (en) * | 2013-12-20 | 2021-09-28 | Rambus, Inc. | High level instructions with lower-level assembly code style primitives within a memory appliance for accessing memory |
-
2018
- 2018-08-30 CN CN201810999181.1A patent/CN109344296B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105677736A (zh) * | 2015-12-29 | 2016-06-15 | 曙光信息产业(北京)有限公司 | 一种增加、删除服务器节点的方法及装置 |
CN106959928A (zh) * | 2017-03-23 | 2017-07-18 | 华中科技大学 | 一种基于多级缓存结构的流式数据实时处理方法及系统 |
Non-Patent Citations (1)
Title |
---|
基于Hash-LRU的超时流管理算法;李海莉等;《信息工程大学学报》;20150630;全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN109344296A (zh) | 2019-02-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109344296B (zh) | 实现Redis的HASH键的域生命周期控制方法、系统、服务器及存储介质 | |
US11960441B2 (en) | Retention management for data streams | |
US7958091B2 (en) | Method for fast bulk loading data into a database while bypassing exit routines | |
US20050038792A1 (en) | Apparatus and method for operating circular files | |
US7636736B1 (en) | Method and apparatus for creating and using a policy-based access/change log | |
CN109067841B (zh) | 基于ZooKeeper的服务限流方法、系统、服务器及存储介质 | |
EP2797014A1 (en) | Database update execution according to power management schemes | |
US20120150895A1 (en) | Maximum allowable runtime query governor | |
CN107402821A (zh) | 共享资源的访问控制方法、装置和设备 | |
US11556379B2 (en) | Protect cloud objects from attacks | |
US9104567B2 (en) | Memory-leak identification | |
RU2665272C1 (ru) | Способ и устройство для восстановления дедуплицированных данных | |
CN109597707A (zh) | 克隆卷数据拷贝方法、装置及计算机可读存储介质 | |
CN110222046B (zh) | 列表数据的处理方法、装置、服务器和存储介质 | |
US11853229B2 (en) | Method and apparatus for updating cached information, device, and medium | |
US10078647B2 (en) | Allocating free space in a database | |
US9305007B1 (en) | Discovering relationships using deduplication metadata to provide a value-added service | |
US11132351B2 (en) | Executing transactions based on success or failure of the transactions | |
CN111984379A (zh) | 读写事务控制方法、系统、终端设备及存储介质 | |
CN109800184A (zh) | 针对小块输入的缓存方法、系统、装置及可存储介质 | |
US20160306834A1 (en) | Index masking based on insert contention ratio | |
CN111752941A (zh) | 一种数据存储、访问方法、装置、服务器及存储介质 | |
US9111015B1 (en) | System and method for generating a point-in-time copy of a subset of a collectively-managed set of data items | |
US11323497B2 (en) | Expiration of data streams for application programs in a streaming data storage platform | |
CN111506557A (zh) | Utxo库建立方法、装置、计算机设备和存储介质 |
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 |