CN110781190A - 对Redis hash的每个field进行过期管理的方法 - Google Patents

对Redis hash的每个field进行过期管理的方法 Download PDF

Info

Publication number
CN110781190A
CN110781190A CN201911037918.2A CN201911037918A CN110781190A CN 110781190 A CN110781190 A CN 110781190A CN 201911037918 A CN201911037918 A CN 201911037918A CN 110781190 A CN110781190 A CN 110781190A
Authority
CN
China
Prior art keywords
sortedset
field
jhredis
hash
redis
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.)
Pending
Application number
CN201911037918.2A
Other languages
English (en)
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.)
Beijing Gold And Network Ltd Co
Original Assignee
Beijing Gold And Network Ltd Co
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 Beijing Gold And Network Ltd Co filed Critical Beijing Gold And Network Ltd Co
Priority to CN201911037918.2A priority Critical patent/CN110781190A/zh
Publication of CN110781190A publication Critical patent/CN110781190A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2255Hash tables
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/21Design, administration or maintenance of databases
    • G06F16/215Improving data quality; Data cleansing, e.g. de-duplication, removing invalid entries or correcting typographical errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2365Ensuring data consistency and integrity

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

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

Description

对Redis hash的每个field进行过期管理的方法
技术领域
本发明涉及计算机领域。更具体地说,本发明涉及一种对Redis hash的每个field进行过期管理的方法。
背景技术
Redis是当前最为热门的NOSQL系统之一,它有String、Hash、List、Set、SortedSet5种数据类型,分别有不同的应用场景。其中Hash类型可以看做是>结构,即:每个Hash的key对应的Value内部实际是一个HashMap。
Redis支持为每个Hash类型的缓存设置一个过期时间,即:一个key设置一个过期时间。但是key里每个具体的field并没有自己的过期时间。然而我们经常需要管理单个field的生命周期,而这是Redis目前所做不到的。
发明内容
本发明的一个目的是提供一种对Redis hash的每个field进行过期管理的方法,能实现对key中每个field的过期管理。
为了实现根据本发明的目的和其它优点,提供了一种对Redis hash的每个field进行过期管理的方法,包括:
将Redis Client封装到自定义JhRedis系统;
调用所述自定义JhRedis系统判断当前key是否有key为{hashkey}_expire的SortedSet,若无,则为所述当前key创建一个key为{hashkey}_expire的SortedSet,其member等于所述当前key的field,score为field的过期时间,再向SortedSet中写入数据;
调用所述自定义JhRedis系统读取当前field的SortedSet,判断其score是否过期,若过期,则自动清理关于所述当前field的数据,返回空数据,若未过期,则返回value。
这样,通过将Redis Client封装到自定义JhRedis系统,并给当前key增加一个SortedSet,其member等于所述当前key的field,score为field的过期时间,即可通过SortedSet管理key中每个field的过期时间。
优选的是,所述的对Redis hash的每个field进行过期管理的方法,还包括,在设定周期内对所述自定义JhRedis系统进行第一次调用时,对比检查SortedSet和Hash的数据,使两者保持一致。这样,就避免了比如由于服务器故障而造成数据不完整,导致SortedSet和Hash的数据发生不一致,实现SortedSet和Hash的数据一致性。
优选的是,所述的对Redis hash的每个field进行过期管理的方法,还包括,在创建SortedSet后,对SortedSet中的数据进行初始化。这样,就自动向SortedSet对应的每个field中插入基于现在时间的过期时间。
本发明还提高了一种对Redis hash的每个field进行过期管理的装置,包括:
自定义JhRedis系统,其用于封装Redis Client;
写操作模块,其用于调用所述自定义JhRedis系统判断当前key是否有key为{hashkey}_expire的SortedSet,若无,则为所述当前key创建一个key为{hashkey}_expire的SortedSet,其member等于所述当前key的field,score为field的过期时间,再向SortedSet中写入数据;
读操作模块,其用于调用所述自定义JhRedis系统读取当前field的SortedSet,判断其score是否过期,若过期,则自动清理关于所述当前field的数据,若未过期,则返回value或空数据。
优选的是,所述的对Redis hash的每个field进行过期管理的装置,还包括,对比检查模块,其用于在设定周期内对所述自定义JhRedis系统进行第一次调用时,对比检查SortedSet和Hash的数据,使两者保持一致。
优选的是,所述的对Redis hash的每个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为本发明装置的结构框图。
具体实施方式
下面结合实施例和附图对本发明做进一步的详细说明,以令本领域技术人员参照说明书文字能够据以实施。
应当理解,本文所使用的诸如“具有”、“包含”以及“包括”术语并不排除一个或多个其它元件或其组合的存在或添加。
术语解释:
Redis Client:Redis客户端;
Redis Server:Redis服务器;
Redis系统中包含5中数据类型,分别为String字符串、Hash哈希、List列表、Set集、SortedSet有序集合。
现有技术中,业务代码通过Redis Client(如:BookSleeve、ServiceStack.Redis等)访问Redis Server,如图1所示。本发明将Redis Client封装在自定义JhRedis系统中,并在其上开放了一组访问接口,这些接口在原有Redis接口基础上进行了封装和改造,实现了对hash的field过期功能,如图2所示。
假设:Redis里有两个Hash类型的数据,其key分别是:pro、user。如下表所示:
Figure BDA0002252057710000041
业务引用自定义JhRedis系统后,就可以通过自定义JhRedis系统的接口设置Hash的过期时间,代码形如:
1.JhRedis.Helper.AddExpireSet(″pro_set″,5);
2.JhRedis.Helper.AddExpireSet(″user_set″,6);
设置后,Redis里将存储两个String类型的数据:
key value
pro_set 5
user_set 6
然后,自定义JhRedis系统会通过SortedSet来维护Hash的field及其过期时间。
具体逻辑如下:
Hash写操作,如图3所示。
业务调用自定义JhRedis系统的Hash写操作时,自定义JhRedis系统会检查当前key是否有key为{hashkey}_expire的SortedSet数据。如果没有则会创建一个key为{hashkey}_expire的SortedSet数据。其member等于Hash的field,其score是Hash的field的过期时间(UNIX时间戳)。
即:如果调用自定义JhRedis系统的
HSet(″pro″,″pro_id1″,″{\″id\″:\″pro_id1\″,\″name\″:\″iphone 11\″,\″price\″:5599,}″),自定义JhRedis系统首先正常保存Hash值;接着,根据pro_set的值计算一个过期时间1569233960;然后向SortedSet里插入数据:ZAdd("pro_expire",1569233960,"pro_id1")。这样,在pro_expire里就保存了pro`的field的过期时间,如下表所示。
Figure BDA0002252057710000051
Hash读操作,如图4所示。
业务调用自定义JhRedis系统的Hash读操作时,自定义JhRedis系统会检查当前field是否已经过期,如果过期,将会自动清理关于此field的数据。即:如果调用自定义JhRedis系统的HGet("pro","pro_id1"),自定义JhRedis系统首先执行ZScore("pro_expire","pro_id1"),从而读取过期时间1569233960,判断这个值是否大于当前时间,如果大于则说明已经过期,则自定义JhRedis系统将清理"pro"中field为"pro_id1"的数据和"pro_expire"里member为"pro_id1"的数据,返回空数据,如果不大于则说明未过期,则返回value。
自定义JhRedis系统本身的逻辑必须与具体的Redis工具脱钩。因此,本发明采用反向代理方式屏蔽了不同Client的区别,使调用者可以切换不同的Client而不改动代码。
用SortedSet维护Hash的field及其过期时间,存在这两个数据不一致的可能性。比如由于服务器故障而造成数据不完整,导致两者发生不一致。因此,本发明在HSet、HDel时,会通过事务实现SortedSet和Hash的数据一致性。并且,在每天对自定义JhRedis系统的第一次调用的时候,启动一个任务对比检查SortedSet和Hash的数据。
在生产环境部署时,原来Redis里的所有Hash数据都没有对应的SortedSet数据,因此,本发明需要按照业务的设置,对SortedSet分批次并行化初始化,自动为所有field添加过期时间。
本发明的技术方案带来如下有益效果:为Hash中的每个key自动生成一个key为{hashkey}_expire的SortedSet,其member等于key的field,score为field的过期时间,通过SortedSet来维护Hash的field及其过期时间,实现对key中每个field的过期管理。
本发明还包含对Redis hash的每个field进行过期管理的装置,包括:
自定义JhRedis系统,其用于封装Redis Client;
写操作模块,其用于调用所述自定义JhRedis系统判断当前key是否有key为{hashkey}_expire的SortedSet,若无,则为所述当前key创建一个key为{hashkey}_expire的SortedSet,其member等于所述当前key的field,score为field的过期时间,再向SortedSet中写入数据;;
读操作模块,其用于调用所述自定义JhRedis系统读取当前field的SortedSet,判断其score是否过期,若过期,则自动清理关于所述当前field的数据,若未过期,则返回value或空数据。
所述的对Redis hash的每个field进行过期管理的装置,还包括,对比检查模块,其用于在设定周期内对所述自定义JhRedis系统进行第一次调用时,对比检查SortedSet和Hash的数据,使两者保持一致。
所述的对Redis hash的每个field进行过期管理的装置,还包括,初始化模块,其用于在创建SortedSet后,对SortedSet中的数据进行初始化。
本发明还提供一种电子设备,包括:至少一个处理器,以及与所述至少一个处理器通信连接的存储器,其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器执行上述的方法。
本发明还提供一种存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时,实现上述的方法。
尽管本发明的实施方案已公开如上,但其并不仅仅限于说明书和实施方式中所列运用,它完全可以被适用于各种适合本发明的领域,对于熟悉本领域的人员而言,可容易地实现另外的修改,因此在不背离权利要求及等同范围所限定的一般概念下,本发明并不限于特定的细节和这里示出与描述的图例。

Claims (8)

1.对Redis hash的每个field进行过期管理的方法,其特征在于,包括:
将Redis Client封装到自定义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所述的对Redis hash的每个field进行过期管理的方法,其特征在于,还包括,在设定周期内对所述自定义JhRedis系统进行第一次调用时,对比检查SortedSet和Hash的数据,使两者保持一致。
3.如权利要求1所述的对Redis hash的每个field进行过期管理的方法,其特征在于,还包括,在创建SortedSet后,对SortedSet中的数据进行初始化。
4.对Redis hash的每个field进行过期管理的装置,其特征在于,包括:
自定义JhRedis系统,其用于封装Redis Client;
写操作模块,其用于调用所述自定义JhRedis系统判断当前key是否有key为{hashkey}_expire的SortedSet,若无,则为所述当前key创建一个key为{hashkey}_expire的SortedSet,其member等于所述当前key的field,score为field的过期时间,再向SortedSet中写入数据;
读操作模块,其用于调用所述自定义JhRedis系统读取当前field的SortedSet,判断其score是否过期,若过期,则自动清理关于所述当前field的数据,若未过期,则返回value或空数据。
5.如权利要求1所述的对Redis hash的每个field进行过期管理的装置,其特征在于,还包括,对比检查模块,其用于在设定周期内对所述自定义JhRedis系统进行第一次调用时,对比检查SortedSet和Hash的数据,使两者保持一致。
6.如权利要求1所述的对Redis hash的每个field进行过期管理的装置,其特征在于,还包括,初始化模块,其用于在创建SortedSet后,对SortedSet中的数据进行初始化。
7.电子设备,其特征在于,包括:至少一个处理器,以及与所述至少一个处理器通信连接的存储器,其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器执行权利要求1-3中任一项所述的方法。
8.存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时,实现权利要求1-3中任一项所述的方法。
CN201911037918.2A 2019-10-29 2019-10-29 对Redis hash的每个field进行过期管理的方法 Pending CN110781190A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201911037918.2A CN110781190A (zh) 2019-10-29 2019-10-29 对Redis hash的每个field进行过期管理的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201911037918.2A CN110781190A (zh) 2019-10-29 2019-10-29 对Redis hash的每个field进行过期管理的方法

Publications (1)

Publication Number Publication Date
CN110781190A true CN110781190A (zh) 2020-02-11

Family

ID=69387435

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201911037918.2A Pending CN110781190A (zh) 2019-10-29 2019-10-29 对Redis hash的每个field进行过期管理的方法

Country Status (1)

Country Link
CN (1) CN110781190A (zh)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20170346915A1 (en) * 2016-05-27 2017-11-30 Home Box Office, Inc. Cached data repurposing
CN107688611A (zh) * 2017-08-03 2018-02-13 杭州铭师堂教育科技发展有限公司 一种基于saltstack的Redis键值管理系统及方法
CN109101635A (zh) * 2018-08-16 2018-12-28 广州小鹏汽车科技有限公司 一种基于Redis Hash结构的数据处理方法及装置
CN109344296A (zh) * 2018-08-30 2019-02-15 武汉斗鱼网络科技有限公司 实现Redis的HASH键的域生命周期控制方法、系统、服务器及存储介质
CN109977139A (zh) * 2019-03-18 2019-07-05 京东数字科技控股有限公司 基于类结构化查询语句的数据处理方法和装置

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20170346915A1 (en) * 2016-05-27 2017-11-30 Home Box Office, Inc. Cached data repurposing
CN107688611A (zh) * 2017-08-03 2018-02-13 杭州铭师堂教育科技发展有限公司 一种基于saltstack的Redis键值管理系统及方法
CN109101635A (zh) * 2018-08-16 2018-12-28 广州小鹏汽车科技有限公司 一种基于Redis Hash结构的数据处理方法及装置
CN109344296A (zh) * 2018-08-30 2019-02-15 武汉斗鱼网络科技有限公司 实现Redis的HASH键的域生命周期控制方法、系统、服务器及存储介质
CN109977139A (zh) * 2019-03-18 2019-07-05 京东数字科技控股有限公司 基于类结构化查询语句的数据处理方法和装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
詹利群;程海林;任晓炜;: "Redis缓存技术在自动气象站资料调用中的优化应用", no. 05, pages 79 - 85 *

Similar Documents

Publication Publication Date Title
CN111274045B (zh) 一种多平台对接方法、装置、计算机设备及可读存储介质
CN108292213B (zh) 更新依赖服务
CN108388599B (zh) 电子装置、数据迁移及调用方法及存储介质
CN110737592B (zh) 一种链路异常识别方法、服务器及计算机可读存储介质
WO2020181810A1 (zh) 应用于集群内多级缓存的数据处理方法和装置
CN111414389B (zh) 一种数据处理方法、装置、电子设备及存储介质
US11176517B2 (en) System and method for anomaly detection and deduplication of electronic data feeds
WO2020224235A1 (zh) 跨链交易的方法、装置、设备及存储介质
CN111124288B (zh) 一种vpd存储管理方法、装置、设备及可读存储介质
WO2019148721A1 (zh) 电子装置、互联网服务系统风险预警方法及存储介质
CN110599354A (zh) 线上对账方法、系统、计算机设备和计算机可读存储介质
CN111159040A (zh) 一种测试数据生成方法、装置、设备及存储介质
CN106598931A (zh) 信息模板的生成方法
CN102135895A (zh) 系统升级方法及系统
CN114637611A (zh) 基于消息队列的信息处理方法、装置及计算机设备
CN112306648B (zh) 事务调用方法、装置、电子设备及存储介质
CN107291923B (zh) 信息处理方法和装置
CN105677427A (zh) 一种模块升级的方法及装置
CN109597819B (zh) 用于更新数据库的方法和装置
CN110781190A (zh) 对Redis hash的每个field进行过期管理的方法
CN111143461A (zh) 映射关系处理系统、方法和电子设备
CN110059081A (zh) 基于数据展示的数据输出方法、装置及计算机设备
CN115018569A (zh) 基于区块链的发票开具方法、发票报销方法、装置和设备
CN114331398A (zh) 费用结算数据处理方法、装置、设备及存储介质
US11080372B2 (en) Presenting programs for execution via various presentable media

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
RJ01 Rejection of invention patent application after publication
RJ01 Rejection of invention patent application after publication

Application publication date: 20200211