CN116578590A - 一种热点数据缓存处理方法和装置 - Google Patents
一种热点数据缓存处理方法和装置 Download PDFInfo
- Publication number
- CN116578590A CN116578590A CN202310320291.1A CN202310320291A CN116578590A CN 116578590 A CN116578590 A CN 116578590A CN 202310320291 A CN202310320291 A CN 202310320291A CN 116578590 A CN116578590 A CN 116578590A
- Authority
- CN
- China
- Prior art keywords
- data
- target data
- count value
- filter
- hot
- 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
- 238000003672 processing method Methods 0.000 title claims abstract description 6
- 238000000034 method Methods 0.000 claims abstract description 42
- 238000012545 processing Methods 0.000 claims abstract description 21
- 241000544061 Cuculus canorus Species 0.000 claims description 72
- 230000008569 process Effects 0.000 description 11
- 238000004891 communication Methods 0.000 description 7
- 238000010586 diagram Methods 0.000 description 6
- 230000002159 abnormal effect Effects 0.000 description 5
- 230000006870 function Effects 0.000 description 4
- 230000009471 action Effects 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 3
- 230000005856 abnormality Effects 0.000 description 2
- 230000008030 elimination Effects 0.000 description 2
- 238000003379 elimination reaction Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 238000011160 research Methods 0.000 description 2
- 230000001960 triggered effect Effects 0.000 description 2
- 230000015556 catabolic process Effects 0.000 description 1
- 238000004140 cleaning Methods 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000000737 periodic effect Effects 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 238000005070 sampling Methods 0.000 description 1
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/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24552—Database cache management
-
- 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/24—Querying
- G06F16/245—Query processing
- G06F16/2458—Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
- G06F16/2477—Temporal data queries
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Computational Linguistics (AREA)
- Fuzzy Systems (AREA)
- Mathematical Physics (AREA)
- Probability & Statistics with Applications (AREA)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请提供了一种热点数据缓存处理方法和装置,涉及数据处理技术领域,方法包括:确定来自调用方的数据获取请求所请求的目标数据是否已配置缓存,若是且缓存中未存储目标数据,则基于预先生成的过滤器在滑动时间窗口包含的各单位时间内的计数值判断目标数据是否为热数据;若是,则根据过滤器在各单位时间内的计数值,对过滤器在当前时间内的计数值进行更新,并将从数据库获取的目标数据设置到缓存,并返回给调用方;若否,则将过滤器在当前时间内的计数值加1,并将从数据库获取的目标数据返回给调用方。本申请通过过滤器在各单位时间内的计数值确定目标数据是否为热数据,仅在目标数据为热数据时才设置到缓存,避免了大量冷数据写入缓存。
Description
技术领域
本申请涉及数据处理技术领域,特别是涉及一种热点数据缓存处理方法和装置。
背景技术
为了使一些数据可以快速被访问,同时降低数据库的访问压力,通常会在这些数据首次被访问时将这些数据的缓存键key设置到缓存中,并为缓存键key设置一定的过期时间,以在达到过期时间时,将其从缓存中剔除。正常情况下,这种数据缓存处理方法可以很好地支持服务,并有效地降低了数据库的访问压力,但是,当调用方请求获取大量数据(例如亿级全量视频数据)时,缓存中会激增大量冷数据,新数据的写入和过期冷数据的内存空间得不到及时释放导致缓存增长直至被撑爆,影响业务。
发明内容
有鉴于此,本申请提供了一种热点数据缓存处理方法和装置,用于解决现有技术存在的冷数据占用大量缓存的问题,其技术方案如下:
一种热点数据缓存处理方法,包括:
在目标数据已配置缓存,且当前的缓存中未存储目标数据的情况下,基于预先生成的过滤器在滑动时间窗口包含的各单位时间内的计数值判断目标数据是否为热数据,其中,滑动时间窗口根据当前时间和目标数据的缓存键对应的缓存过期时间确定,过滤器在一单位时间内的计数值表征调用方在该单位时间内对目标数据的数据库访问量,过滤器在一单位时间内的初始计数值为0;
若目标数据为热数据,则根据过滤器在各单位时间内的计数值,对过滤器在当前时间内的计数值进行更新,并将从数据库获取的目标数据设置到缓存中,以及将获取的目标数据返回给调用方;
若目标数据不为热数据,则将过滤器在当前时间内的计数值加1,并将从数据库获取的目标数据返回给调用方。
可选的,基于预先生成的过滤器在滑动时间窗口包含的各单位时间内的计数值判断目标数据是否为热数据,包括:
判断是否需要对目标数据进行热数据识别;
若需要对目标数据进行热数据识别,则判断目标数据的身份标识号ID是否小于预设的ID阈值,其中,一数据的ID越大,则该数据的产生时间越晚;
若是,则基于过滤器在滑动时间窗口包含的各单位时间内的计数值判断目标数据是否为热数据。
可选的,还包括:
若不需要对目标数据进行热数据识别,则将目标数据确定为热数据。
可选的,过滤器包括在滑动时间窗口包含的各单位时间分别生成的布谷鸟过滤器,布谷鸟过滤器的名称基于目标数据的业务关键字、当前时间和缓存过期时间设置。
可选的,滑动时间窗口包含的首个单位时间为当前时间减去缓存过期时间,末个单位时间为当前时间;
基于过滤器在滑动时间窗口包含的各单位时间内的计数值判断目标数据是否为热数据,包括:
将滑动时间窗口包含的首个单位时间生成的布谷鸟过滤器的计数值作为第一计数值,将滑动时间窗口包含的末个单位时间生成的布谷鸟过滤器的计数值作为第二计数值,并计算除首个单位时间和末个单位时间外的所有单位时间生成的布谷鸟过滤器的计数值之和,和值作为第三计数值;
在第二计数值大于或等于预设的计数阈值的情况下,确定目标数据为热数据;
在第二计数值小于计数阈值的情况下,计算第一计数值、第二计数值和第三计数值的和,和值作为第四计数值;
若第四计数值大于或等于计数阈值,则确定目标数据为热数据,否则,确定目标数据不为热数据。
可选的,根据过滤器在各单位时间内的计数值,对过滤器在当前时间内的计数值进行更新,包括:
判断第三计数值是否等于0;
若第三计数值等于0,则将第二计数值重置为计数阈值;
若第三计数值不等于0,则将第二计数值加1。
可选的,布谷鸟过滤器的过期时间设置为缓存过期时间加2。
可选的,布谷鸟过滤器在生成阶段的相关参数和/或ID阈值和/或业务关键字和/或计数阈值通过apollo在线配置。
可选的,将业务关键字作为hashtag,并通过lua脚本执行基于预先生成的过滤器在滑动时间窗口包含的各单位时间内的计数值判断目标数据是否为热数据,若目标数据为热数据,则根据过滤器在各单位时间内的计数值,对过滤器在当前时间内的计数值进行更新,若目标数据不为热数据,则将过滤器在当前时间内的计数值加1。
一种热点数据缓存处理装置,包括:
缓存配置判断单元,用于接收来自调用方的数据获取请求,确定数据获取请求所请求的目标数据是否已配置缓存;
热数据判断单元,用于在目标数据已配置缓存,且当前的缓存中未存储目标数据的情况下,基于预先生成的过滤器在滑动时间窗口包含的各单位时间内的计数值判断目标数据是否为热数据,其中,滑动时间窗口根据当前时间和目标数据的缓存键对应的缓存过期时间确定,过滤器在一单位时间内的计数值表征调用方在该单位时间内对目标数据的数据库访问量,过滤器在一单位时间内的初始计数值为0;
热数据缓存处理单元,用于若目标数据为热数据,则根据过滤器在各单位时间内的计数值,对过滤器在当前时间内的计数值进行更新,并将从数据库获取的目标数据设置到缓存中,以及将获取的目标数据返回给调用方;
冷数据处理单元,用于若目标数据不为热数据,则将过滤器在当前时间内的计数值加1,并将从数据库获取的目标数据返回给调用方。
经由上述的技术方案可知,本申请提供的热点数据缓存处理方法,接收来自调用方的数据获取请求,确定数据获取请求所请求的目标数据是否已配置缓存,在目标数据已配置缓存,且当前的缓存中未存储目标数据的情况下,基于预先生成的过滤器在滑动时间窗口包含的各单位时间内的计数值判断目标数据是否为热数据,若目标数据为热数据,则根据过滤器在各单位时间内的计数值,对过滤器在当前时间内的计数值进行更新,并将从数据库获取的目标数据设置到缓存中,以及将获取的目标数据返回给调用方,若目标数据不为热数据,则将过滤器在当前时间内的计数值加1,并将从数据库获取的目标数据返回给调用方。本申请能够通过过滤器在各单位时间内的计数值确定目标数据是否为热数据,仅在目标数据为热数据时,才将目标数据设置到缓存,避免了大量冷数据写入缓存,也间接地解决了过期冷数据key的内存得不到释放的问题。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本申请实施例提供的一种热点数据缓存处理方法的流程示意图;
图2为基于计数值判断目标数据是否为热数据的过程示意图;
图3为本申请实施例提供的另一种热点数据缓存处理方法的流程示意图;
图4为本申请实施例提供的一种热点数据缓存处理装置的结构示意图;
图5为本申请实施例提供的一种热点数据缓存处理设备的硬件结构框图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
为了便于对本申请提供的热点数据缓存处理方法进行说明,现将本申请应用的相关术语进行解释。
分布式缓存:指的是与应用分离的缓存组件或服务,其自身就是一个独立的应用,与本地应用隔离,多个应用可直接共享缓存,本发明中特指redis缓存。
PUGC视频:用户上传视频,非版权视频。
冷热数据:根据数据被访问的频率不同,数据可以被分为热数据、温数据、冷数据。冷数据指不会被经常访问的数据,热数据指经常被访问的数据。在本发明中,访问次数小于阈值的数据为冷数据,访问次数大于等于阈值的数据为热数据。
布隆过滤器:布隆过滤器(Bloom Filter)是由Howard Bloom在1970年提出的一种比较巧妙的概率型数据结构,它可以告诉你某种东西一定不存在或者可能存在。当布隆过滤器说,某种东西存在时,这种东西可能不存在;当布隆过滤器说,某种东西不存在时,那么这种东西一定不存在。布隆过滤器插入、查询效率非常高,占用内存很小。
布谷鸟过滤器:为了解决布隆过滤器不能删除元素的问题,论文《Cuckoo Filter:Better Than Bloom》作者提出了布谷鸟过滤器。相比布隆过滤器,布谷鸟过滤器提供了比传统布隆过滤器更高的查找性能,即使在接近满的情况下(比如空间利用率达到95%的时候)。如果要求误判率低于3%,它比布隆过滤器有更低的空间开销。它支持动态地添加和删除元素,同时它支持计数。
apollo:apollo是携程框架部门研发的分布式配置中心,能够集中化管理应用不同环境、不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的权限、流程治理等特性,适用于微服务配置管理场景。
redis hashtag:hashtag用于redis集群中,其实现方式为在key中加个{}。相同的hashtag被分配到相同的节点,相同的槽。
redis lua脚本:redis脚本使用lua解释器来执行脚本。本发明中,使用lua脚本来保证操作的原子性。
惰性清除:当数据过期时redis并不急着去清除这些数据,而是等到该key被再次请求时进行删除。
定期清除:每隔一段时间就对一些key进行采样检查,检查是否过期,并将其中过期的key全部删除。如果过期key的占比超过可接受的过期key的百分比,则重复删除的过程,直到过期key的比例降至可接受的过期key的百分比以下。
如背景技术中的介绍,目前的方案中均无法识别冷热数据,所有请求的key都设置到缓存里,导致缓存中存在大量冷数据。例如,目前利用redis自身数据淘汰策略的方案中,限定redis占用的内存,redis会根据自身数据淘汰策略,留下热数据到内存;再例如,基于最近最少使用(lru)的思想实现缓存失效的方案,redis的缓存每命中一次,就给命中的缓存key增加一定的过期时间(ttl),一段时间后,热数据的ttl都会较大,不会自动失效,而冷数据基本上过了设定的ttl就马上失效了。
上述两种方案均会导致缓存中存在大量冷数据,另外,在第二种方案中,热数据可能会永不过期,进而形成脏数据,此外,由于redis过期键删除策略,即结合使用惰性清除和定期清除两种方式,即使冷数据过期了,也不会立刻释放内存,因此,还是会造成过期键内存被占用,而且随着写数据的增加,会造成redis中内存不够用,进而触发自身数据淘汰策略,而频繁触发自身数据淘汰策略对CPU不友好,成本较高。
为了解决现有技术存在的问题,降低缓存占用量,本案发明人进行了研究。初始阶段的思路中,本案发明人初步阶段想到,可以在数据库中的数据被访问时,通过设置到内存中的redis incr计数器对被访问的数据进行计数,然后基于计数值确定被访问的数据是否为热数据,若是,则将其设置到缓存中,反之,若被访问的数据为冷数据,则不将其设置到缓存中。这种数据缓存处理方法可以在一定程度上降低缓存占用。
但是,本案发明人深入研究redis incr计数器后发现,redis incr计数器占用的内存比较大,而可以设置到缓存的数据的数据量非常大(通常为亿级数据),对每个数据都使用redis incr计数器进行计数,将占用大量的内存。
为了进一步降低内存占用情况,本案发明人进行了进一步深入研究发现,过滤器占用的内存相比于redis incr占用的内存小,可以使用过滤器替代redis incr计数器,以提高内存占用量。同时,考虑到若一数据的访问量较高(即总体计数值较高),但是访问的时间跨度较大,该数据可能不是热点数据,为此,可以设置当前时间对应的滑动时间窗口,研究滑动时间窗口包含的各单位时间内的访问量,据此确定数据是否为热点数据,结果相对更准确。为此,本案发明人对上述初步研究方案做了进一步改进,最终提出了一种更优的解决方案。接下来通过下述实施例对本申请公开的热点数据缓存处理方法进行介绍。
请参阅图1,示出了本申请实施例提供的热点数据缓存处理方法的流程示意图,该热点数据缓存处理方法可以包括:
步骤S101、接收来自调用方的数据获取请求,确定数据获取请求所请求的目标数据是否已配置缓存。
考虑到数据特性不同使得数据成为热点数据的概率不同,例如,有些商品为性价比高的平价商品,则这些商品成为热点数据的概率较高,还有些商品价格高昂,大概率不会成为热点数据。为了避免从数据库访问热点数据,导致数据库被击穿等情况产生,通常会基于人工经验,为写入数据库的各数据配置是否可设置到缓存空间的配置信息,具体的,为大概率会成为热点数据的那些数据配置缓存,以在其首次被访问时,将其写入缓存空间。
在本步骤中,当接收到来自调用方的数据获取请求时,可以首先确定数据获取请求所请求的目标数据是否已配置缓存,若未配置缓存,则直接从数据库获取目标数据,并将获取的目标数据返回给调用方,若配置了缓存,则按照下述步骤执行。
可选的,目标数据可以为视频数据,例如PUGC视频数据。当然,目标数据还可以为其他,本申请对此不进行具体限定。
步骤S102、在目标数据已配置缓存,且当前的缓存中未存储目标数据的情况下,基于预先生成的过滤器在滑动时间窗口包含的各单位时间内的计数值判断目标数据是否为热数据。
具体的,在目标数据已配置缓存的情况下,本申请会先判断当前的缓存中是否已存储目标数据,若已存储目标数据,说明先前已有调用方请求过目标数据,此时可以直接将缓存中的目标数据返回给调用方。
若未存储目标数据,则需要先通过本步骤确定目标数据是否为热数据(也可以称为热点数据)。具体的,本申请先确定当前时间对应的滑动时间窗口,然后通过滑动时间窗口内生成的过滤器在滑动时间窗口包含的每个单位时间内的计数值,判断目标数据是否为热数据。
需要说明的是,上述过滤器在一单位时间内的计数值表征调用方在该单位时间内对目标数据的数据库访问量,并且过滤器在一单位时间内的初始计数值为0。这里,数据库访问量是指从数据库获取目标数据的访问次数。
上述滑动时间窗口根据当前时间和目标数据的缓存键key对应的缓存过期时间确定,例如,目标数据的缓存键key对应的缓存过期时间为n小时,当前时间为i时,则滑动时间窗口为[i-n,i]。
示例性的,目标数据的缓存键key对应的缓存过期时间为3小时,当前时间为14时,单位时间为每小时,则滑动时间窗口为[11,14],那么本申请可以通过过滤器分别在11时、12时、13时和14时的共计4个计数值,判断目标数据是否为热数据。
需要说明的是,本申请对目标数据的数据库访问量进行计数,而非对目标数据真实访问量进行计数,是为了降低过滤器的压力。例如,对目标数据的真实访问量进行统计,统计结果为每分钟40万次左右,而按照本申请的方案执行,目标数据的数据库访问量为每分钟8万次左右,远远低于目标数据的真实访问量,由此大大降低了过滤器的判断热数据压力和计数压力。
步骤S103a、若目标数据为热数据,则根据过滤器在各单位时间内的计数值,对过滤器在当前时间内的计数值进行更新,并将从数据库获取的目标数据设置到缓存中,以及将获取的目标数据返回给调用方。
具体的,由于当前的缓存中没有写入目标数据,因此需要从数据库获取目标数据并返回给调用方。
由于目标数据为热数据,为了避免未来缓存过期时间内出现大量对目标数据的数据获取请求,需要从数据库获取目标数据,导致数据库被击穿,本申请可以将从数据库获取到的目标数据写入当前的缓存中,这样后续就可以从缓存读取目标数据,而非从数据库读取目标数据了。
同时,本申请实施例还需要在判断目标数据为热数据的情况下,根据过滤器在各单位时间内的计数值,对过滤器在当前时间内的计数值进行更新。可选的,根据过滤器在滑动时间窗口包含的除首个单位时间和末个单位时间外的其他单位时间内的计数值,对过滤器在当前时间内的计数值进行更新。
步骤S103b、若目标数据不为热数据,则将过滤器在当前时间内的计数值加1,并将从数据库获取的目标数据返回给调用方。
在目标数据不为热数据的情况下,即目标数据为冷数据(本申请中数据仅有两种形态,即热数据和冷数据)的情况下,可以从数据库获取目标数据并返回给调用方,但是不将目标数据写入当前的缓存中。这是因为目标数据本身的数据库访问量不大,即使从数据库读取目标数据,也不会对数据库造成损坏。
同时,本申请实施例还需要在判断目标数据为冷数据的情况下,将本次从数据库访问目标数据加到过滤器在当前时间内的计数值上,也即将过滤器在当前时间内的计数值加1。
本申请提供的热点数据缓存处理方法,接收来自调用方的数据获取请求,确定数据获取请求所请求的目标数据是否已配置缓存,在目标数据已配置缓存,且当前的缓存中未存储目标数据的情况下,基于预先生成的过滤器在滑动时间窗口包含的各单位时间内的计数值判断目标数据是否为热数据,若目标数据为热数据,则根据过滤器在各单位时间内的计数值,对过滤器在当前时间内的计数值进行更新,并将从数据库获取的目标数据设置到缓存中,以及将获取的目标数据返回给调用方,若目标数据不为热数据,则将过滤器在当前时间内的计数值加1,并将从数据库获取的目标数据返回给调用方。本申请能够通过过滤器在各单位时间内的计数值确定目标数据是否为热数据,仅在目标数据为热数据时,才将目标数据设置到缓存,避免了大量冷数据写入缓存,也间接地解决了过期冷数据key的内存得不到释放的问题。
在本申请的一些实施例中,对前述步骤S102“基于预先生成的过滤器在滑动时间窗口包含的各单位时间内的计数值判断目标数据是否为热数据”的过程进行介绍。
在一可选实施例中,考虑到步骤S102的相关代码部署端出现异常时,可能会导致步骤S102判断目标数据是否为热数据的过程异常耗时,调用方长时间得不到响应,服务体验较差。
为了在上述相关代码部署端出现异常的情况下,可以快速向调用方反馈请求结果,本实施例可以首先判断是否需要对目标数据进行热数据识别,若是,则基于过滤器在滑动时间窗口包含的各单位时间内的计数值判断目标数据是否为热数据。
例如,若上述相关代码部署端出现异常,则确定不需要对目标数据进行热数据识别,若上述相关代码部署端未出现异常,则确定需要对目标数据进行热数据识别。
可选的,本申请可以通过预先做一些配置,例如,设置热数据识别开关,当检测到上述相关代码部署端出现异常时,使热数据识别开关关闭,此后不对目标数据进行热数据识别,当未检测到上述相关代码部署端出现异常时,使热数据识别开关打开,那么基于过滤器在滑动时间窗口包含的各单位时间内的计数值判断目标数据是否为热数据。
在一种优选的情况下,考虑到现今互联网内的数据量十分庞大,以PUGC视频数据为例,PUGC视频服务系统上存储有上亿条视频数据,若这些视频数据被访问时,都生成过滤器,并通过过滤器进行计数以及热数据识别,计算量以及占用的内存资源极大。而一些老旧的数据一旦被请求,有可能是因为某些事件导致被请求的老旧数据成为热数据,为此,可以专门针对这些老旧数据进行热数据识别,以在识别到被请求的老旧数据为冷数据时,不将其写入缓存,达到降低计算量和内存资源占用的目的。
为此,可选的,“基于预先生成的过滤器在滑动时间窗口包含的各单位时间内的计数值判断目标数据是否为热数据”的过程可以包括:
步骤S11、判断是否需要对目标数据进行热数据识别。
步骤S12、若需要对目标数据进行热数据识别,则判断目标数据的身份标识号ID是否小于预设的ID阈值,其中,一数据的ID越大,则该数据的产生时间越晚。
具体的,调用方请求的数据的身份标识号(Identity document,ID)通常都是随着新数据的产生,ID逐渐递增的,即一数据的产生时间越晚,则该数据的ID越大。基于此,本实施例可以通过目标数据的ID来判断目标数据是否为老旧数据。若目标数据的ID小于预设的ID阈值maxid,则确定目标数据为老旧数据,反之,若目标数据的ID大于或等于maxid,确定目标数据为近期新产生的数据。
步骤S13a、若是,则基于过滤器在滑动时间窗口包含的各单位时间内的计数值判断目标数据是否为热数据。
具体的,在目标数据的ID小于maxid的情况下,可以基于过滤器在滑动时间窗口包含的各单位时间内的计数值判断目标数据是否为热数据。
可选的,本申请实施例还可以包括以下步骤S13b。
步骤S13b、若否,则将目标数据确定为热数据。
具体的,若目标数据的ID大于或等于maxid,则本实施例可以将目标数据确定为热数据,以兼容现有技术。
也即,本实施例对于老旧数据,通过过滤器的计数值进行热数据识别;对于新数据,按照现有技术的方案执行,即在已配置缓存且当前的缓存中未存储目标数据的情况下,只要目标数据被访问,就将其写入到当前的缓存空间。
在本申请的另一些实施例中,对前述步骤S13a“基于过滤器在滑动时间窗口包含的各单位时间内的计数值判断目标数据是否为热数据”的过程进行介绍。
可选的,本申请会在每个单位时间(例如每小时)均动态生成一个用于对目标数据的数据库访问量进行计数的布谷鸟过滤器。在本申请中,为了更好地兼容热数据,本申请采用滑动时间窗口包含的各单位时间分别生成的布谷鸟过滤器的计数值来判断目标数据是否为热数据,也即,前述步骤S102提及的过滤器可以包括在滑动时间窗口包含的各单位时间分别生成的布谷鸟过滤器。
这里,滑动时间窗口包含的各单位时间分别生成的布谷鸟过滤器的名称基于目标数据的业务关键字、当前时间和缓存过期时间设置。例如,假设当前时间为i时,目标数据的缓存键key对应的缓存过期时间为n小时,目标数据的业务关键字为hashtag,则布谷鸟过滤器的个数为n+1个,该n+1个布谷鸟过滤器的名称分别为:{hashtag}_i、{hashtag}_i-1,...,{hashtag}_i-n。
例如,以目标数据为视频数据,目标数据的关键字为com.sohu.spaces.videos.model.VideoInfo,缓存过期时间为3小时,当前时间为14时为例,本申请会在11~14时分别生成一个布谷鸟过滤器,其中,11时生成的布谷鸟过滤器命名为{com.sohu.spaces.videos.model.VideoInfo}_11,12时生成的布谷鸟过滤器命名为{com.sohu.spaces.videos.model.VideoInfo}_12,13时生成的布谷鸟过滤器命名为{com.sohu.spaces.videos.model.VideoInfo}_13,14时生成的布谷鸟过滤器命名为{com.sohu.spaces.videos.model.VideoInfo}_14。
以滑动时间窗口包含的首个单位时间为当前时间减去缓存过期时间,末个单位时间为当前时间(即滑动时间窗口为[i-n,i],i为当前时间,n为缓存过期时间)为例,步骤S13a“基于过滤器在滑动时间窗口包含的各单位时间内的计数值判断目标数据是否为热数据”的过程可以包括:
步骤S21、将滑动时间窗口包含的首个单位时间生成的布谷鸟过滤器的计数值作为第一计数值,将滑动时间窗口包含的末个单位时间生成的布谷鸟过滤器的计数值作为第二计数值,并计算除首个单位时间和末个单位时间外的所有单位时间生成的布谷鸟过滤器的计数值之和,和值作为第三计数值。
例如,以滑动时间窗口为[11,14]为例,第一计数值是指11时生成的布谷鸟过滤器的计数值,第二计数值是指14时生成的布谷鸟过滤器的计数值,第三计数值是指12时和13时生成的布谷鸟过滤器的计数值之和。
为了便于下述描述,将第一计数值用CFf表示,将第二计数值用CFi表示,将第三计数值用CFm表示。
步骤S22、判断第二计数值是否大于或等于预设的计数阈值。
参见图2所示,为基于计数值判断目标数据是否为热数据的过程示意图,T表示预设的计数阈值。
本步骤判断CFi是否大于或等于T。
步骤S23、在第二计数值大于或等于计数阈值的情况下,确定目标数据为热数据,在第二计数值小于计数阈值的情况下,计算第一计数值、第二计数值和第三计数值的和,和值作为第四计数值,并判断第四计数值是否大于或等于计数阈值。
具体的,若CFi大于或等于T,则返回true,表示目标数据为热数据;若CFi小于T,则进一步根据滑动时间窗口内的所有布谷鸟过滤器的计数值判断,即判断CFf、CFi和CFm的和值(即第四计数值)是否大于或等于T。
步骤S24、若第四计数值大于或等于计数阈值,则确定目标数据为热数据,否则,确定目标数据不为热数据。
具体的,若CFf+CFi+CFm≥T,则返回true,表示目标数据为热数据;若CFf+CFi+CFm<T,则返回false,表示目标数据为冷数据。
经由上述几个步骤可以确定出目标数据是否为热数据。
值得注意的是,本实施例是根据目标数据在当前时间对应的滑动时间窗口内的数据库访问量确定目标数据是否为热数据,随着时间推移,目标数据可能不再是热数据,也可能还是热数据,具体需要通过时间推移后的滑动时间窗口内的数据库访问量确定。
由于本申请在当前滑动时间窗口内确定目标数据为热数据后,会将热数据设置到缓存中,后续缓存过期时间内再有针对目标数据的数据获取请求时,直接从缓存读取目标数据。由于不从数据库读取目标数据,布谷鸟过滤器不会对缓存内的访问量进行计数,直至目标数据在缓存中过期后,再次从数据库读取目标数据时,新生成的布谷鸟过滤器才会开始计数。
例如,在当前时间为14时时,确定目标数据为热数据,本申请将目标数据设置到缓存中,假设目标数据的缓存键key对应的缓存过期时间为3小时,则在15时~16时,再接收到针对目标数据的数据获取请求时,会从缓存中读取目标数据,那么在15时~16时生成的2个布谷鸟过滤器的计数值均为0。当17时目标数据在缓存中过期时,再接收到针对目标数据的数据获取请求时,会从数据库读取目标数据,此时17时生成的布谷鸟过滤器开始计数。
在一种可能的场景中,当目标数据在15时~16时的缓存访问量较大时,即目标数据仍为热数据时,根据17时对应的滑动时间窗口内的计数值判断目标数据是否为热数据,可能判断结果为目标数据不为热数据,例如17时生成的布谷鸟过滤器的计数值小于计数阈值T的情况下,判断结果为目标数据不为热数据,判断结果出错。
为了避免判断出错,本申请还提供了一种优化措施。参见图2所示,可选的,在第四计数值大于或等于计数阈值的情况下,本申请可以进一步判断第三计数值CFm是否等于0,若是,说明先前已将目标数据确定为热数据,但是目标数据在缓存中可能刚好过期了,此时将第二计数值CFi重置为计数阈值T。
当然,若第三计数值CFm不等于0,则需要将本次访问计入第二计数值CFi中,即将第二计数值CFi加1。
也即,前述步骤S103a“根据过滤器在各单位时间内的计数值,对过滤器在当前时间内的计数值进行更新”的过程包括:判断第三计数值是否等于0,若第三计数值等于0,则将第二计数值重置为计数阈值,若第三计数值不等于0,则将第二计数值加1。
如前述实施例中的介绍,本申请会在每个单位时间均动态生成一个用于对目标数据的数据库访问量进行计数的布谷鸟过滤器,但是用于判断目标数据是否为热数据的计数值仅是当前时间对应的滑动时间窗口内生成的布谷鸟过滤器的计数值,因此,滑动时间窗口之前生成的布谷鸟过滤器的计数值不再被需要,为了避免这些布谷鸟过滤器占用内存,可选的,本申请实施例可以为布谷鸟过滤器设置过期时间。
可选的,布谷鸟过滤器的过期时间设置为缓存过期时间加2。
需要说明的是,前述本申请实施例提供的过滤器为布谷鸟过滤器仅为示例,不作为对本申请的限定。
例如,可选的,前述计数阈值为1或2的情况下,前述步骤S102还可以使用布隆过滤器代替布谷鸟过滤器进行计数。两者区别如下:
第一,随着阈值T的增加,布隆过滤器计算成本增高,耗时也明显增加。假设阈值为T,缓存过期时间为n,则在每个小时窗口下创建T个布隆过滤器来计数,在对应的时间窗口下共需要T*(n+1)个布隆过滤器,相同阈值下,只需要n+1个布谷鸟过滤器,随着阈值的增加,布谷鸟计数器的计算成本和耗时无明显增加。
第二,布隆过滤器计数的优点是错误率低(低于1%)、填充率高(100%),对大数据计数时直接创建对应元素数量的布隆过滤器即可,而布谷鸟计数器错误率相对高一些(低于3%)、填充率低于布隆过滤器,创建布谷鸟过滤器的参数需要根据经验值来预估。
在本申请的又一些实施例中,前述步骤S102“基于预先生成的过滤器在滑动时间窗口包含的各单位时间内的计数值判断目标数据是否为热数据”、步骤S103a“若目标数据为热数据,则根据过滤器在各单位时间内的计数值,对过滤器在当前时间内的计数值进行更新”,以及步骤S103b“若目标数据不为热数据,则将过滤器在当前时间内的计数值加1”的过程可以通过本申请预先设置的冷热数据识别装置实现。
以过滤器为布谷鸟过滤器为例,可选的,冷热数据识别装置中包含前置判断模块、基于滑动时间窗口的布谷鸟过滤器的冷热数据识别模块(以下简称冷热数据识别模块)和布谷鸟过滤器生成模块。
前置判断模块,用于判断是否使用冷热数据识别模块(即判断是否需要对目标数据进行热数据识别),以及在需要对目标数据进行热数据识别的情况下,判断目标数据的ID是否小于ID阈值。
布谷鸟过滤器生成模块,用于在每个单位时间动态生成一个用于对目标数据的数据库访问量进行计数的布谷鸟过滤器。
冷热数据识别模块,用于基于预先生成的过滤器在滑动时间窗口包含的各单位时间内的计数值判断目标数据是否为热数据,并在判断目标数据为热数据的情况下,根据过滤器在各单位时间内的计数值,对过滤器在当前时间内的计数值进行更新,以及在判断目标数据不为热数据的情况下,将过滤器在当前时间内的计数值加1。
参见图3,为本申请实施例提供的另一种热点数据缓存处理方法的流程示意图,具体包括以下步骤:
步骤S300、接收来自调用方的数据获取请求,判断所述数据获取请求所请求的目标数据是否已配置缓存,若否,执行步骤S301,若是,执行步骤S302。
步骤S301、判断数据库中是否存在目标数据,若是,则从数据库获取目标数据,并返回给调用方,若否,则返回空对象给调用方。
步骤S302、判断当前的缓存中是否已存储目标数据,若是,则从当前的缓存中获取目标数据,并返回给调用方,若否,执行步骤S303。
具体的,若当前的缓存中未存储目标数据,则执行冷热数据识别装置,即执行前置判断模块、冷热数据识别模块和布谷鸟过滤器生成模块。
步骤S303、判断是否使用冷热数据识别模块,若否,执行步骤S306,若是,执行步骤S304。
具体的,本步骤通过前置判断模块实现。
本步骤判断是否使用冷热数据识别模块,若是,则确定需要对目标数据进行热数据识别,若否,则确定不需要对目标数据进行热数据识别,此时认为目标数据为热数据。
步骤S304、判断目标数据的ID是否小于预设的ID阈值,若否,执行步骤S306,若是,则执行步骤S305。
步骤S305、执行冷热数据识别模块,以识别目标数据是否为热数据,若否,执行步骤S301,若是,执行步骤S306。
具体的,本步骤通过布谷鸟过滤器生成模块产生定时任务,生成布谷鸟过滤器,并基于布谷鸟过滤器在滑动时间窗口包含的各单位时间内的计数值判断目标数据是否为热数据,若是,则根据过滤器在各单位时间内的计数值,对过滤器在当前时间内的计数值进行更新,并执行步骤S306,若否,则将过滤器在当前时间内的计数值加1,并执行步骤S301。
步骤S306、判断数据库中是否存在目标数据,若是,则从数据库获取目标数据,将获取目标数据存储至当前的缓存中,并将获取的目标数据返回给调用方,若否,则返回空对象给调用方。
本申请实施例使用基于滑动时间窗口的布谷鸟过滤器的冷热数据识别装置识别冷热数据,只将热数据设置到缓存中,冷数据不设置到缓存中,避免了大量冷数据写入缓存、也间接地解决了过期冷数据key的内存得不到释放的问题,从而使缓存更好地支持服务,使服务更平稳地对外提供服务。此外,使用布谷鸟过滤器对亿级数据计数,极大地节约了内存。
在前述各实施例中,涉及多种类型的参数,例如,创建过滤器(例如布谷鸟过滤器)的一些关键参数,如初始容量、桶大小等;ID阈值;计数阈值;业务关键字。这些参数需要预先配置,才可以按照前述各步骤仅将热数据写入缓存。
为了使参数配置后无需重新发布服务,可选的,上述参数可以通过apollo在线配置,例如,布谷鸟过滤器在生成阶段的相关参数和/或ID阈值和/或业务关键字和/或计数阈值通过apollo在线配置。
本申请通过apollo在线配置的方式,可以实现动态平滑调整参数,无需重新发布服务,增加了灵活性。
在本申请的又一些实施例中,为了保证原子性,本实施例可以将业务关键字作为hashtag,并通过lua脚本执行前述步骤S102“基于预先生成的过滤器在滑动时间窗口包含的各单位时间内的计数值判断目标数据是否为热数据”,以及前述步骤S103a“若目标数据为热数据,则根据过滤器在各单位时间内的计数值,对过滤器在当前时间内的计数值进行更新”,以及前述步骤S103b“若目标数据不为热数据,则将过滤器在当前时间内的计数值加1”。
本实施例因为使用布谷鸟过滤器识别冷热数据的过程需要使用lua脚本保证原子性,而使用lua脚本需要确保打包命令中的key在一个实例上,为此使用业务关键字作为hashtag可以保证所有的布谷鸟过滤器都散落到redis的同一个实例上。
本申请实施例还提供了一种热点数据缓存处理装置,下面对本申请实施例提供的热点数据缓存处理装置进行描述,下文描述的热点数据缓存处理装置与上文描述的热点数据缓存处理方法可相互对应参照。
请参阅图4,示出了本申请实施例提供的热点数据缓存处理装置的结构示意图,如图4所示,该热点数据缓存处理装置可以包括:缓存配置判断单元401、热数据判断单元402、热数据缓存处理单元403和冷数据处理单元404。
缓存配置判断单元401,用于接收来自调用方的数据获取请求,确定数据获取请求所请求的目标数据是否已配置缓存。
热数据判断单元402,用于在所述目标数据已配置缓存,且当前的缓存中未存储所述目标数据的情况下,基于预先生成的过滤器在滑动时间窗口包含的各单位时间内的计数值判断目标数据是否为热数据,其中,滑动时间窗口根据当前时间和目标数据的缓存键对应的缓存过期时间确定,过滤器在一单位时间内的计数值表征调用方在该单位时间内对目标数据的数据库访问量,过滤器在一单位时间内的初始计数值为0。
热数据缓存处理单元403,用于若目标数据为热数据,则根据过滤器在各单位时间内的计数值,对过滤器在当前时间内的计数值进行更新,并将从数据库获取的目标数据设置到缓存中,以及将获取的目标数据返回给调用方。
冷数据处理单元404,用于若目标数据不为热数据,则将过滤器在当前时间内的计数值加1,并将从数据库获取的目标数据返回给调用方。
在一种可能的实现方式中,上述热数据判断单元可以包括:热识别执行判断子单元、ID比较子单元和第一热数据识别子单元。
热识别执行判断子单元,用于判断是否需要对目标数据进行热数据识别。
ID比较子单元,用于若热识别执行判断单元确定需要对目标数据进行热数据识别,则判断目标数据的身份标识号ID是否小于预设的ID阈值,其中,一数据的ID越大,则该数据的产生时间越晚。
第一热数据识别子单元,用于若ID比较单元确定目标数据的ID小于ID阈值,则基于过滤器在滑动时间窗口包含的各单位时间内的计数值判断目标数据是否为热数据。
在一种可能的实现方式中,上述热数据判断单元还可以包括:第二热数据识别子单元。
第二热数据识别子单元,用于若热识别执行判断单元确定不需要对目标数据进行热数据识别,则将目标数据确定为热数据。
在一种可能的实现方式中,上述过滤器包括在滑动时间窗口包含的各单位时间分别生成的布谷鸟过滤器,布谷鸟过滤器的名称基于目标数据的业务关键字、当前时间和缓存过期时间设置。
在一种可能的实现方式中,上述滑动时间窗口包含的首个单位时间为当前时间减去缓存过期时间,末个单位时间为当前时间。
基于此,上述第一热数据识别子单元基于过滤器在滑动时间窗口包含的各单位时间内的计数值判断目标数据是否为热数据时具体可以用于:
将滑动时间窗口包含的首个单位时间生成的布谷鸟过滤器的计数值作为第一计数值,将滑动时间窗口包含的末个单位时间生成的布谷鸟过滤器的计数值作为第二计数值,并计算除首个单位时间和末个单位时间外的所有单位时间生成的布谷鸟过滤器的计数值之和,和值作为第三计数值;
在第二计数值大于或等于预设的计数阈值的情况下,确定目标数据为热数据;
在第二计数值小于计数阈值的情况下,计算第一计数值、第二计数值和第三计数值的和,和值作为第四计数值;
若第四计数值大于或等于计数阈值,则确定目标数据为热数据,否则,确定目标数据不为热数据。
在一种可能的实现方式中,上述热数据缓存处理单元在根据过滤器在各单位时间内的计数值,对过滤器在当前时间内的计数值进行更新时具体可以用于:判断第三计数值是否等于0,若第三计数值等于0,则将第二计数值重置为计数阈值,若第三计数值不等于0,则将第二计数值加1。
在一种可能的实现方式中,上述布谷鸟过滤器的过期时间设置为缓存过期时间加2。
在一种可能的实现方式中,上述布谷鸟过滤器在生成阶段的相关参数和/或ID阈值和/或业务关键字和/或计数阈值通过apollo在线配置。
在一种可能的实现方式中,本申请实施例提供的热点数据缓存处理装置可以将业务关键字作为hashtag,并通过lua脚本执行上述热数据判断单元基于预先生成的过滤器在滑动时间窗口包含的各单位时间内的计数值判断目标数据是否为热数据的过程,以及,上述热数据缓存处理单元若目标数据为热数据,则根据过滤器在各单位时间内的计数值,对过滤器在当前时间内的计数值进行更新的过程,以及,上述冷数据处理单元若目标数据不为热数据,则将过滤器在当前时间内的计数值加1的过程。
本申请实施例还提供了一种热点数据缓存处理设备。可选的,图5示出了热点数据缓存处理设备的硬件结构框图,参照图5,该热点数据缓存处理设备的硬件结构可以包括:至少一个处理器501,至少一个通信接口502,至少一个存储器503和至少一个通信总线504;
在本申请实施例中,处理器501、通信接口502、存储器503、通信总线504的数量为至少一个,且处理器501、通信接口502、存储器503通过通信总线504完成相互间的通信;
处理器501可能是一个中央处理器CPU,或者是特定集成电路ASIC(ApplicationSpecific Integrated Circuit),或者是被配置成实施本发明实施例的一个或多个集成电路等;
存储器503可能包含高速RAM存储器,也可能还包括非易失性存储器(non-volatile memory)等,例如至少一个磁盘存储器;
其中,存储器503存储有程序,处理器501可调用存储器503存储的程序,所述程序用于:
接收来自调用方的数据获取请求,确定数据获取请求所请求的目标数据是否已配置缓存;
在目标数据已配置缓存,且当前的缓存中未存储目标数据的情况下,基于预先生成的过滤器在滑动时间窗口包含的各单位时间内的计数值判断目标数据是否为热数据,其中,滑动时间窗口根据当前时间和目标数据的缓存键对应的缓存过期时间确定,过滤器在一单位时间内的计数值表征调用方在该单位时间内对目标数据的数据库访问量,过滤器在一单位时间内的初始计数值为0;
若目标数据为热数据,则根据过滤器在各单位时间内的计数值,对过滤器在当前时间内的计数值进行更新,并将从数据库获取的目标数据设置到缓存中,以及将获取的目标数据返回给调用方;
若目标数据不为热数据,则将过滤器在当前时间内的计数值加1,并将从数据库获取的目标数据返回给调用方。
可选的,所述程序的细化功能和扩展功能可参照上文描述。
本申请实施例还提供一种可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时,实现如上述热点数据缓存处理方法。
可选的,所述程序的细化功能和扩展功能可参照上文描述。
最后,还需要说明的是,在本文中,诸如和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本申请。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本申请的精神或范围的情况下,在其它实施例中实现。因此,本申请将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
Claims (10)
1.一种热点数据缓存处理方法,其特征在于,包括:
接收来自调用方的数据获取请求,确定所述数据获取请求所请求的目标数据是否已配置缓存;
在所述目标数据已配置缓存,且当前的缓存中未存储所述目标数据的情况下,基于预先生成的过滤器在滑动时间窗口包含的各单位时间内的计数值判断所述目标数据是否为热数据,其中,所述滑动时间窗口根据当前时间和所述目标数据的缓存键对应的缓存过期时间确定,所述过滤器在一单位时间内的计数值表征所述调用方在该单位时间内对所述目标数据的数据库访问量,所述过滤器在一单位时间内的初始计数值为0;
若所述目标数据为热数据,则根据所述过滤器在所述各单位时间内的计数值,对所述过滤器在所述当前时间内的计数值进行更新,并将从数据库获取的所述目标数据设置到所述缓存中,以及将获取的所述目标数据返回给所述调用方;
若所述目标数据不为热数据,则将所述过滤器在所述当前时间内的计数值加1,并将从所述数据库获取的所述目标数据返回给所述调用方。
2.根据权利要求1所述的热点数据缓存处理方法,其特征在于,所述基于预先生成的过滤器在滑动时间窗口包含的各单位时间内的计数值判断所述目标数据是否为热数据,包括:
判断是否需要对所述目标数据进行热数据识别;
若需要对所述目标数据进行热数据识别,则判断所述目标数据的身份标识号ID是否小于预设的ID阈值,其中,一数据的ID越大,则该数据的产生时间越晚;
若是,则基于所述过滤器在滑动时间窗口包含的各单位时间内的计数值判断所述目标数据是否为热数据。
3.根据权利要求2所述的热点数据缓存处理方法,其特征在于,还包括:
若不需要对所述目标数据进行热数据识别,则将所述目标数据确定为热数据。
4.根据权利要求2所述的热点数据缓存处理方法,其特征在于,所述过滤器包括在所述滑动时间窗口包含的各单位时间分别生成的布谷鸟过滤器,所述布谷鸟过滤器的名称基于所述目标数据的业务关键字、所述当前时间和所述缓存过期时间设置。
5.根据权利要求4所述的热点数据缓存处理方法,其特征在于,所述滑动时间窗口包含的首个单位时间为所述当前时间减去所述缓存过期时间,末个单位时间为所述当前时间;
所述基于所述过滤器在滑动时间窗口包含的各单位时间内的计数值判断所述目标数据是否为热数据,包括:
将所述滑动时间窗口包含的首个单位时间生成的布谷鸟过滤器的计数值作为第一计数值,将所述滑动时间窗口包含的末个单位时间生成的布谷鸟过滤器的计数值作为第二计数值,并计算除所述首个单位时间和所述末个单位时间外的所有单位时间生成的布谷鸟过滤器的计数值之和,和值作为第三计数值;
在所述第二计数值大于或等于预设的计数阈值的情况下,确定所述目标数据为热数据;
在所述第二计数值小于所述计数阈值的情况下,计算所述第一计数值、所述第二计数值和所述第三计数值的和,和值作为第四计数值;
若所述第四计数值大于或等于所述计数阈值,则确定所述目标数据为热数据,否则,确定所述目标数据不为热数据。
6.根据权利要求5所述的热点数据缓存处理方法,其特征在于,所述根据所述过滤器在所述各单位时间内的计数值,对所述过滤器在所述当前时间内的计数值进行更新,包括:
判断所述第三计数值是否等于0;
若所述第三计数值等于0,则将所述第二计数值重置为所述计数阈值;
若所述第三计数值不等于0,则将所述第二计数值加1。
7.根据权利要求5所述的热点数据缓存处理方法,其特征在于,所述布谷鸟过滤器的过期时间设置为所述缓存过期时间加2。
8.根据权利要求7所述的热点数据缓存处理方法,其特征在于,所述布谷鸟过滤器在生成阶段的相关参数和/或所述ID阈值和/或所述业务关键字和/或所述计数阈值通过apollo在线配置。
9.根据权利要求4所述的热点数据缓存处理方法,其特征在于,将所述业务关键字作为hashtag,并通过lua脚本执行所述基于预先生成的过滤器在滑动时间窗口包含的各单位时间内的计数值判断所述目标数据是否为热数据,若所述目标数据为热数据,则根据所述过滤器在所述各单位时间内的计数值,对所述过滤器在所述当前时间内的计数值进行更新,若所述目标数据不为热数据,则将所述过滤器在所述当前时间内的计数值加1。
10.一种热点数据缓存处理装置,其特征在于,包括:
缓存配置判断单元,用于接收来自调用方的数据获取请求,确定所述数据获取请求所请求的目标数据是否已配置缓存;
热数据判断单元,用于在所述目标数据已配置缓存,且当前的缓存中未存储所述目标数据的情况下,基于预先生成的过滤器在滑动时间窗口包含的各单位时间内的计数值判断所述目标数据是否为热数据,其中,所述滑动时间窗口根据当前时间和所述目标数据的缓存键对应的缓存过期时间确定,所述过滤器在一单位时间内的计数值表征所述调用方在该单位时间内对所述目标数据的数据库访问量,所述过滤器在一单位时间内的初始计数值为0;
热数据缓存处理单元,用于若所述目标数据为热数据,则根据所述过滤器在所述各单位时间内的计数值,对所述过滤器在所述当前时间内的计数值进行更新,并将从数据库获取的所述目标数据设置到所述缓存中,以及将获取的所述目标数据返回给所述调用方;
冷数据处理单元,用于若所述目标数据不为热数据,则将所述过滤器在所述当前时间内的计数值加1,并将从所述数据库获取的所述目标数据返回给所述调用方。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310320291.1A CN116578590A (zh) | 2023-03-29 | 2023-03-29 | 一种热点数据缓存处理方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310320291.1A CN116578590A (zh) | 2023-03-29 | 2023-03-29 | 一种热点数据缓存处理方法和装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116578590A true CN116578590A (zh) | 2023-08-11 |
Family
ID=87532937
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310320291.1A Pending CN116578590A (zh) | 2023-03-29 | 2023-03-29 | 一种热点数据缓存处理方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116578590A (zh) |
-
2023
- 2023-03-29 CN CN202310320291.1A patent/CN116578590A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106911780B (zh) | 业务id生成方法、装置及系统 | |
CN110018899B (zh) | 回收内存的方法及装置 | |
KR100791628B1 (ko) | 이동망 시스템의 능동적 캐쉬 제어 방법, 그 기록 매체 및그 시스템 | |
CN107301215B (zh) | 一种搜索结果缓存方法及装置、搜索方法及装置 | |
CN111159436B (zh) | 一种推荐多媒体内容的方法、装置及计算设备 | |
CN106230997B (zh) | 一种资源调度方法和装置 | |
CN107092628B (zh) | 时间序列数据的处理方法和装置 | |
EP2062143A2 (en) | Probabilistic technique for consistency checking cache entries | |
CN111857597A (zh) | 一种热点数据缓存方法、系统及相关装置 | |
CN111381988A (zh) | 一种请求限速方法、装置、电子设备及存储介质 | |
CN113687781A (zh) | 一种热数据的上拉方法、装置、设备及介质 | |
CN113630329A (zh) | 基于用户访问量的负载均衡方法、系统及可读存储介质 | |
EP3588913B1 (en) | Data caching method, apparatus and computer readable medium | |
CN114979158A (zh) | 一种资源监控方法、系统、设备及计算机可读存储介质 | |
CN109062717B (zh) | 数据缓存及缓存容灾方法和系统、缓存系统 | |
JP4105260B2 (ja) | 情報処理装置 | |
CN112631504A (zh) | 利用堆外内存实现本地缓存的方法和装置 | |
CN111988427A (zh) | 一种基于分布式的本地缓存处理方法及系统 | |
US11269784B1 (en) | System and methods for efficient caching in a distributed environment | |
CN116578590A (zh) | 一种热点数据缓存处理方法和装置 | |
CN105893150B (zh) | 接口调用频度控制、接口调用请求处理方法及装置 | |
CN111913913A (zh) | 访问请求的处理方法和装置 | |
CN116150207A (zh) | 一种数据缓存方法、装置、电子设备及存储介质 | |
CN114896082A (zh) | 消息处理方法、装置、电子设备和存储介质 | |
CN111523002B (zh) | 一种主键分配方法、装置、服务器及存储介质 |
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 |