CN110781190A - 对Redis hash的每个field进行过期管理的方法 - Google Patents
对Redis hash的每个field进行过期管理的方法 Download PDFInfo
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 18
- 238000004140 cleaning Methods 0.000 claims abstract description 6
- 238000004806 packaging method and process Methods 0.000 claims abstract description 6
- 238000004590 computer program Methods 0.000 claims description 3
- 238000003860 storage Methods 0.000 claims description 3
- 238000010586 diagram Methods 0.000 description 5
- 230000009286 beneficial effect Effects 0.000 description 2
- 230000003203 everyday effect Effects 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2255—Hash tables
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/21—Design, administration or maintenance of databases
- G06F16/215—Improving data quality; Data cleansing, e.g. de-duplication, removing invalid entries or correcting typographical errors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2365—Ensuring 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是当前最为热门的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。如下表所示:
业务引用自定义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的过期时间,如下表所示。
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中任一项所述的方法。
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)
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 | 京东数字科技控股有限公司 | 基于类结构化查询语句的数据处理方法和装置 |
-
2019
- 2019-10-29 CN CN201911037918.2A patent/CN110781190A/zh active Pending
Patent Citations (5)
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)
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 |