对Redis hash的每个field进行过期管理的方法技术

技术编号:23315086 阅读:41 留言:0更新日期:2020-02-11 17:47
本发明专利技术公开了对Redis hash的每个field进行过期管理的方法,包括:将Redis Client封装到自定义JhRedis系统;调用自定义JhRedis系统判断当前key是否有对应的SortedSet,若无,则为所述当前key创建一个SortedSet,其member等于所述当前key的field,score为field的过期时间,再向SortedSet中写入数据;调用自定义JhRedis系统读取当前field的SortedSet,判断其score是否过期,若过期,则自动清理关于当前field的数据,返回空数据,若未过期,则返回value。本发明专利技术能实现对每个field的过期管理。

Expiration management method for each field of redis hash

【技术实现步骤摘要】
对Redishash的每个field进行过期管理的方法
本专利技术涉及计算机领域。更具体地说,本专利技术涉及一种对Redishash的每个field进行过期管理的方法。
技术介绍
Redis是当前最为热门的NOSQL系统之一,它有String、Hash、List、Set、SortedSet5种数据类型,分别有不同的应用场景。其中Hash类型可以看做是>结构,即:每个Hash的key对应的Value内部实际是一个HashMap。Redis支持为每个Hash类型的缓存设置一个过期时间,即:一个key设置一个过期时间。但是key里每个具体的field并没有自己的过期时间。然而我们经常需要管理单个field的生命周期,而这是Redis目前所做不到的。
技术实现思路
本专利技术的一个目的是提供一种对Redishash的每个field进行过期管理的方法,能实现对key中每个field的过期管理。为了实现根据本专利技术的目的和其它优点,提供了一种对Redishash的每个field进行过期管理的方法,包括:将RedisClient封装到自定义JhRedis系统;调用所述自定义JhRedis系统判断当前key是否有key为{hashkey}_expire的SortedSet,若无,则为所述当前key创建一个key为{hashkey}_expire的SortedSet,其member等于所述当前key的field,score为field的过期时间,再向SortedSet中写入数据;调用所述自定义JhRedis系统读取当前field的SortedSet,判断其score是否过期,若过期,则自动清理关于所述当前field的数据,返回空数据,若未过期,则返回value。这样,通过将RedisClient封装到自定义JhRedis系统,并给当前key增加一个SortedSet,其member等于所述当前key的field,score为field的过期时间,即可通过SortedSet管理key中每个field的过期时间。优选的是,所述的对Redishash的每个field进行过期管理的方法,还包括,在设定周期内对所述自定义JhRedis系统进行第一次调用时,对比检查SortedSet和Hash的数据,使两者保持一致。这样,就避免了比如由于服务器故障而造成数据不完整,导致SortedSet和Hash的数据发生不一致,实现SortedSet和Hash的数据一致性。优选的是,所述的对Redishash的每个field进行过期管理的方法,还包括,在创建SortedSet后,对SortedSet中的数据进行初始化。这样,就自动向SortedSet对应的每个field中插入基于现在时间的过期时间。本专利技术还提高了一种对Redishash的每个field进行过期管理的装置,包括:自定义JhRedis系统,其用于封装RedisClient;写操作模块,其用于调用所述自定义JhRedis系统判断当前key是否有key为{hashkey}_expire的SortedSet,若无,则为所述当前key创建一个key为{hashkey}_expire的SortedSet,其member等于所述当前key的field,score为field的过期时间,再向SortedSet中写入数据;读操作模块,其用于调用所述自定义JhRedis系统读取当前field的SortedSet,判断其score是否过期,若过期,则自动清理关于所述当前field的数据,若未过期,则返回value或空数据。优选的是,所述的对Redishash的每个field进行过期管理的装置,还包括,对比检查模块,其用于在设定周期内对所述自定义JhRedis系统进行第一次调用时,对比检查SortedSet和Hash的数据,使两者保持一致。优选的是,所述的对Redishash的每个field进行过期管理的装置,还包括,初始化模块,其用于在创建SortedSet后,对SortedSet中的数据进行初始化。本专利技术还提供了一种电子设备,包括:至少一个处理器,以及与所述至少一个处理器通信连接的存储器,其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器执行权利要求1-3中任一项所述的方法。本专利技术还提供了一种存储介质,其上存储有计算机程序,该程序被处理器执行时,实现权利要求1-3中任一项所述的方法。本专利技术至少包括以下有益效果:本专利技术可为Hash中的每个key自动生成一个key为{hashkey}_expire的SortedSet,其member等于key的field,score为field的过期时间,通过SortedSet来维护Hash的field及其过期时间,实现对key中每个field的过期管理。本专利技术的其它优点、目标和特征将部分通过下面的说明体现,部分还将通过对本专利技术的研究和实践而为本领域的技术人员所理解。附图说明图1是现有业务系统框图;图2是本专利技术业务系统框图;图3是根据本专利技术的Hash写操作流程图;图4是根据本专利技术的Hash读操作流程图;图5为本专利技术装置的结构框图。具体实施方式下面结合实施例和附图对本专利技术做进一步的详细说明,以令本领域技术人员参照说明书文字能够据以实施。应当理解,本文所使用的诸如“具有”、“包含”以及“包括”术语并不排除一个或多个其它元件或其组合的存在或添加。术语解释:RedisClient:Redis客户端;RedisServer:Redis服务器;Redis系统中包含5中数据类型,分别为String字符串、Hash哈希、List列表、Set集、SortedSet有序集合。现有技术中,业务代码通过RedisClient(如:BookSleeve、ServiceStack.Redis等)访问RedisServer,如图1所示。本专利技术将RedisClient封装在自定义JhRedis系统中,并在其上开放了一组访问接口,这些接口在原有Redis接口基础上进行了封装和改造,实现了对hash的field过期功能,如图2所示。假设:Redis里有两个Hash类型的数据,其key分别是:pro、user。如下表所示:业务引用自定义JhRedis系统后,就可以通过自定义JhRedis系统的接口设置Hash的过期时间,代码形如:1.JhRedis.Helper.AddExpireSet(″pro_set″,5);2.JhRedis.Helper.AddExpireSet(″user_set″,6);设置后,Redis里将存储两个String类型的数据:keyvaluepro_set5user_set6<本文档来自技高网...

【技术保护点】
1.对Redis hash的每个field进行过期管理的方法,其特征在于,包括:/n将Redis Client封装到自定义JhRedis系统;/n调用所述自定义JhRedis系统判断当前key是否有key为{hashkey}_expire的SortedSet,若无,则为所述当前key创建一个key为{hashkey}_expire的SortedSet,其member等于所述当前key的field,score为field的过期时间,再向SortedSet中写入数据;/n调用所述自定义JhRedis系统读取当前field的SortedSet,判断其score是否过期,若过期,则自动清理关于所述当前field的数据,返回空数据,若未过期,则返回value。/n

【技术特征摘要】
1.对Redishash的每个field进行过期管理的方法,其特征在于,包括:
将RedisClient封装到自定义JhRedis系统;
调用所述自定义JhRedis系统判断当前key是否有key为{hashkey}_expire的SortedSet,若无,则为所述当前key创建一个key为{hashkey}_expire的SortedSet,其member等于所述当前key的field,score为field的过期时间,再向SortedSet中写入数据;
调用所述自定义JhRedis系统读取当前field的SortedSet,判断其score是否过期,若过期,则自动清理关于所述当前field的数据,返回空数据,若未过期,则返回value。


2.如权利要求1所述的对Redishash的每个field进行过期管理的方法,其特征在于,还包括,在设定周期内对所述自定义JhRedis系统进行第一次调用时,对比检查SortedSet和Hash的数据,使两者保持一致。


3.如权利要求1所述的对Redishash的每个field进行过期管理的方法,其特征在于,还包括,在创建SortedSet后,对SortedSet中的数据进行初始化。


4.对Redishash的每个field进行过期管理的装置,其特征在于,包括:
自定义JhRedis系统,其用于封装RedisClient;
写操作模块,其用于调用所述自定义JhRedis系统判断当前key是否...

【专利技术属性】
技术研发人员:党国利
申请(专利权)人:北京金和网络股份有限公司
类型:发明
国别省市:北京;11

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

1