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

技术编号:20363344 阅读:27 留言:0更新日期:2019-02-16 16:44
本发明专利技术涉及一种实现Redis的HASH键的域生命周期控制方法、系统、服务器及存储介质,本方法结合Redis中LRU活跃属性和定时任务,实现Redis的Hash类型的域生命周期控制,误差在秒级别的实现了Hash的域的自动删除,使得业务能够使用到Hash类型带来的存储结构的遍历的同时,又可以控制Hash类型的域的生命周期。

【技术实现步骤摘要】
实现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值为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键的域生命周期控制方法的步骤。本专利技术还公开一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上本文档来自技高网...

【技术保护点】
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值的每个域。...

【技术特征摘要】
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数据结...

【专利技术属性】
技术研发人员:张振铎
申请(专利权)人:武汉斗鱼网络科技有限公司
类型:发明
国别省市:湖北,42

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1