CN112559573B - 数据缓存方法、装置、设备及计算机可读介质 - Google Patents

数据缓存方法、装置、设备及计算机可读介质 Download PDF

Info

Publication number
CN112559573B
CN112559573B CN202011550774.3A CN202011550774A CN112559573B CN 112559573 B CN112559573 B CN 112559573B CN 202011550774 A CN202011550774 A CN 202011550774A CN 112559573 B CN112559573 B CN 112559573B
Authority
CN
China
Prior art keywords
data
target
cache
cached
caching
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.)
Active
Application number
CN202011550774.3A
Other languages
English (en)
Other versions
CN112559573A (zh
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.)
Jingdong Technology Holding Co Ltd
Original Assignee
Jingdong Technology Holding Co Ltd
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 Jingdong Technology Holding Co Ltd filed Critical Jingdong Technology Holding Co Ltd
Priority to CN202011550774.3A priority Critical patent/CN112559573B/zh
Publication of CN112559573A publication Critical patent/CN112559573A/zh
Application granted granted Critical
Publication of CN112559573B publication Critical patent/CN112559573B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • G06F16/24552Database cache management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/957Browsing optimisation, e.g. caching or content distillation
    • G06F16/9574Browsing optimisation, e.g. caching or content distillation of access to content, e.g. by caching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q30/00Commerce
    • G06Q30/02Marketing; Price estimation or determination; Fundraising
    • G06Q30/0207Discounts or incentives, e.g. coupons or rebates

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Business, Economics & Management (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Development Economics (AREA)
  • Data Mining & Analysis (AREA)
  • Accounting & Taxation (AREA)
  • General Engineering & Computer Science (AREA)
  • Finance (AREA)
  • Strategic Management (AREA)
  • Computational Linguistics (AREA)
  • Entrepreneurship & Innovation (AREA)
  • Game Theory and Decision Science (AREA)
  • Economics (AREA)
  • Marketing (AREA)
  • General Business, Economics & Management (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请涉及互联网技术领域,尤其涉及一种数据缓存方法、装置、设备及计算机可读介质。该方法包括:获取待缓存数据,待缓存数据为业务系统中产生的数据;确定与待缓存数据匹配的目标缓存方案,缓存方案与业务系统相对应;按照目标缓存方案对待缓存数据进行缓存。本申请通过抽象了一个应用层面的全局服务,任何想接入本地缓存的功能都通过同一个服务接入,只是为各功能分配不同的业务域标识,这样将多点管理聚合为单点管理,便于把控整体资源,防止出现因系统内存过度分配导致的不稳定问题。

Description

数据缓存方法、装置、设备及计算机可读介质
技术领域
本申请涉及互联网技术领域,尤其涉及一种数据缓存方法、装置、设备及计算机可读介质。
背景技术
本地缓存是指将客户机本地的物理内存划分出一部分空间用来缓冲客户机回写到服务器的数据,因其在回写上的突出贡献,因此本地缓存一般称为本地回写。本地缓存概念首次出现是在无盘领域,作为PXD无盘的一项核心技术被广泛应用。本地缓存技术将客户机回写的数据不再先写入服务器硬盘,而是将回写数据先写入本地回写缓存,当缓存空间达到一定的阈值时,再将数据回写到服务器。有了本地回写缓存功能之后,可大大降低服务器读写压力和网络负载。
目前,相关技术中,本地缓存主要有guava cache、memcache、spring cache等,分别由各系统内的各个服务自行分配及管理,例如某应用内部会对用户已使用优惠券和用户未使用优惠券做两个本地缓存,单独管理各自的key及生命周期、过期策略等,导致不同的缓存数据会有多点管理的情况。
针对上述的问题,目前尚未提出有效的解决方案。
发明内容
本申请提供了一种数据缓存方法、装置、设备及计算机可读介质,以解决缓存多点管理问题的技术问题。
根据本申请实施例的一个方面,本申请提供了一种数据缓存方法,包括:
获取待缓存数据,待缓存数据为业务系统中产生的数据;
确定与待缓存数据匹配的目标缓存方案,缓存方案与业务系统相对应;
按照目标缓存方案对待缓存数据进行缓存。
可选地,确定与待缓存数据匹配的目标缓存方案包括:
提取待缓存数据中的业务域标识,业务域标识用于标记缓存数据所属的业务系统;
在缓存方案匹配器中查找与业务域标识匹配的目标缓存方案,每个缓存方案包括缓存的类型、缓存依赖的主键及缓存的位置,缓存方案匹配器为集成多个缓存方案的数据库,主键与业务系统相匹配。
可选地,按照目标缓存方案对待缓存数据进行缓存包括:
确定待缓存数据的缓存生命周期参数,生命周期参数中包括过期参数,过期参数用于过期缓存数据,并在达到过期参数指示的过期条件的情况下,释放与缓存数据绑定的主键;
将待缓存数据与第一目标主键绑定,并按照缓存生命周期参数设置待缓存数据的生命周期,以进行缓存初始化;
将待缓存数据以目标缓存类型缓存至目标位置。
可选地,按照目标缓存方案对待缓存数据进行缓存之后,该方法还包括按照如下方式对缓存数据进行过期:
每经过第一时长遍历一次与缓存数据绑定的主键;
确定主键的访问次数;
在访问次数小于或等于目标次数的情况下,利用计时器进行计时,计时器用于在访问次数大于目标次数的情况下停止计时并重置计时时间;
在计时器的计时时间达到过期参数中的过期时间的情况下,清除与主键绑定的缓存数据,并释放主键。
可选地,每经过第一时长遍历一次与缓存数据绑定的主键之后,对缓存数据进行过期还包括:
确定最后一次根据主键在对应的缓存数据中写入新数据的第一时间;
在第一时间至当前时间的时间长度大于过期时间的时间长度的情况下,清除与主键绑定的缓存数据,并释放主键。
可选地,按照目标缓存方案对待缓存数据进行缓存之后,该方法还包括按照如下方式对缓存数据进行更新:
每经过第二时长遍历一次与缓存数据绑定的主键,并确定各个主键所绑定的缓存数据的写入时间;
在目标缓存数据的写入时间大于更新时间阈值的情况下,提取与目标缓存数据绑定的第二目标主键;
确定第二目标主键所匹配的目标业务系统;
从目标业务系统中获取目标数据;
利用目标数据对目标缓存数据进行覆盖或修改,以更新目标缓存数据。
可选地,从目标业务系统中获取目标数据包括:
调用数据获取接口;
确定数据获取接口在目标业务系统中实现的目标获取函数;
利用目标获取函数获取目标业务系统中产生的目标数据。
根据本申请实施例的另一方面,本申请提供了一种数据缓存装置,包括:
数据获取模块,用于获取待缓存数据,待缓存数据为业务系统中产生的数据;
策略匹配模块,用于确定与待缓存数据匹配的目标缓存方案,缓存方案与业务系统相对应;
数据缓存模块,用于按照目标缓存方案对待缓存数据进行缓存。
可选地,策略匹配模块包括:
标识提取单元,用于提取待缓存数据中的业务域标识,业务域标识用于标记缓存数据所属的业务系统;
策略查找单元,用于在缓存方案匹配器中查找与业务域标识匹配的目标缓存方案,每个缓存方案包括缓存的类型、缓存依赖的主键及缓存的位置,缓存方案匹配器为集成多个缓存方案的数据库,主键与业务系统相匹配。
可选地,数据缓存模块包括:
参数配置单元,用于确定待缓存数据的缓存生命周期参数,生命周期参数中包括过期参数,过期参数用于过期缓存数据,并在达到过期参数指示的过期条件的情况下,释放与缓存数据绑定的主键;
缓存初始化单元,用于将待缓存数据与第一目标主键绑定,并按照缓存生命周期参数设置待缓存数据的生命周期,以进行缓存初始化;
数据缓存单元,用于将待缓存数据以目标缓存类型缓存至目标位置。
可选地,该装置还包括缓存数据过期模块,包括:
主键遍历单元,用于每经过第一时长遍历一次与缓存数据绑定的主键;
访问次数确定单元,用于确定主键的访问次数;
计时单元,用于在访问次数小于或等于目标次数的情况下,利用计时器进行计时,计时器用于在访问次数大于目标次数的情况下停止计时并重置计时时间;
第一数据过期单元,用于在计时器的计时时间达到过期参数中的过期时间的情况下,清除与主键绑定的缓存数据,并释放主键。
可选地,缓存数据过期模块,还包括:
第一写入时间确定单元,用于每经过第一时长遍历一次与缓存数据绑定的主键之后,确定最后一次根据主键在对应的缓存数据中写入新数据的第一时间;
第二数据过期单元,用于在第一时间至当前时间的时间长度大于过期时间的时间长度的情况下,清除与主键绑定的缓存数据,并释放主键。
可选地,该装置还包括缓存数据更新模块,包括:
第二写入时间确定单元,用于每经过第二时长遍历一次与缓存数据绑定的主键,并确定各个主键所绑定的缓存数据的写入时间;
主键确定单元,用于在目标缓存数据的写入时间大于更新时间阈值的情况下,提取与目标缓存数据绑定的第二目标主键;
业务系统确定单元,用于确定第二目标主键所匹配的目标业务系统;
目标数据获取单元,用于从目标业务系统中获取目标数据;
数据更新单元,用于利用目标数据对目标缓存数据进行覆盖或修改,以更新目标缓存数据。
可选地,目标数据获取单元包括:
抽象接口调用子单元,用于调用数据获取接口;
接口实现确定子单元,用于确定数据获取接口在目标业务系统中实现的目标获取函数;
目标数据获取子单元,用于利用目标获取函数获取目标业务系统中产生的目标数据。
根据本申请实施例的另一方面,本申请提供了一种电子设备,包括存储器、处理器、通信接口及通信总线,存储器中存储有可在处理器上运行的计算机程序,存储器、处理器通过通信总线和通信接口进行通信,处理器执行计算机程序时实现上述方法的步骤。
根据本申请实施例的另一方面,本申请还提供了一种具有处理器可执行的非易失的程序代码的计算机可读介质,程序代码使处理器执行上述的方法。
本申请实施例提供的上述技术方案与相关技术相比具有如下优点:
本申请技术方案为获取待缓存数据,待缓存数据为业务系统中产生的数据;确定与待缓存数据匹配的目标缓存方案,缓存方案与业务系统相对应;按照目标缓存方案对待缓存数据进行缓存。本申请通过抽象了一个应用层面的全局service,任何想接入本地缓存的功能都通过同一个service接入,只是为各功能分配不同的业务域标识,这样将多点管理聚合为单点管理,便于把控整体资源,防止出现因系统内存过度分配导致的不稳定问题。不仅如此,本申请还通过调度系统记录和管理所有缓存数据对应的key,在通过定时遍历key,查看key的访问、写入时间等参数,然后将一定时间内没有访问/写入的数据进行主动清理工作,这样就不需要等下次访问才清理,提前释放内存空间。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理。
为了更清楚地说明本申请实施例或相关技术中的技术方案,下面将对实施例或相关技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为根据本申请实施例提供的一种可选的数据缓存方法硬件环境示意图;
图2为根据本申请实施例提供的一种可选的数据缓存方法流程图;
图3为根据本申请实施例提供的一种可选的数据缓存装置框图;
图4为本申请实施例提供的一种可选的电子设备结构示意图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请的一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。
在后续的描述中,使用用于表示元件的诸如“模块”、“部件”或“单元”的后缀仅为了有利于本申请的说明,其本身并没有特定的意义。因此,“模块”与“部件”可以混合地使用。
首先,在对本申请实施例进行描述的过程中出现的部分名词或者术语适用于如下解释:
caffeine:是基于JAVA1.8Version的高性能缓存库,要求jdk版本最低是1.8,1.9对schedule的支持更为友好,Caffeine提供的内存缓存使用方式与Google guava的API基本相同,Caffeine是基于Google Guava Cache设计经验上改进的成果。
缓存穿透:用户想要查询一个数据,发现redis内存数据库没有,也就是缓存没有命中,于是向持久层数据库查询,发现也没有,于是本次查询失败。当用户很多的时候,缓存都没有命中,于是都去请求了持久层数据库。这会给持久层数据库造成很大的压力,这时候就相当于出现了缓存穿透。
缓存击穿,是指一个key非常热点,在不停的扛着大并发,大并发集中对这一个点进行访问,当这个key在失效的瞬间,持续的大并发就穿破缓存,直接请求数据库,就像在一个屏障上凿开了一个洞。
相关技术中,本地缓存主要有guava cache、memcache、spring cache等,分别由各系统内的各个服务自行分配及管理,例如某应用内部会对用户已使用优惠券和用户未使用优惠券做两个本地缓存,单独管理各自的key及生命周期、过期策略等,导致不同的缓存数据会有多点管理的情况。不仅如此,目前的本地缓存技术,其技术栈不统一,不便于技术管理及后续的升级改造;不同的应用需要单独开发相应的本地缓存系统,虽是单独开发,但各应用存在大量相似冗余的用于管理缓存的代码;每次新增本地缓存都需新增一套cache、key,参数设置不当会对内存或系统产生较大的不确定风险;本地缓存依赖被动刷新,无法有效防止本地缓存击穿等问题;本地缓存的key是被动过期导致一些无效数据常驻内存,对jvm造成无用的负担。
为了解决背景技术中提及的问题,根据本申请实施例的一方面,提供了一种数据缓存方法的实施例。
可选地,在本申请实施例中,上述数据缓存方法可以应用于如图1所示的由终端101和服务器103所构成的硬件环境中。如图1所示,服务器103通过网络与终端101进行连接,可用于为终端或终端上安装的客户端提供服务,可在服务器上或独立于服务器设置数据库105,用于为服务器103提供数据存储服务,上述网络包括但不限于:广域网、城域网或局域网,终端101包括但不限于PC、手机、平板电脑等。
本申请实施例的一种数据缓存方法可以应用于对接多个业务系统的数据缓存场景,系统接收不同业务系统的待缓存数据,根据各个待缓存数据所属的业务系统自动匹配最佳的数据缓存策略进行数据缓存。
本申请实施例中,技术选型上统一本地缓存技术栈可以使用caffeine,caffeine优化了Least Recently Used算法的淘汰策略,在低并发、高并发等不同场景上的性能表现都远高于conCurrentLinkedHashMap、LinkedHashMap、Ehcache、Infinispan等其他本地缓存技术。
本申请实施例中的一种数据缓存方法可以由服务器103来执行,还可以是由服务器103和终端101共同执行,如图2所示,该方法可以包括以下步骤:
步骤S202,获取待缓存数据,待缓存数据为业务系统中产生的数据。
本申请实施例中,可以全量数据获取,即实时获取所有最新数据,适用于数据总量并不大,并且数据热度较相似的场景。可以指定数据获取,即实时获取指定一条或多条数据,适用于数据总量较大,数据热点分布不均的场景。
步骤S204,确定与待缓存数据匹配的目标缓存方案,缓存方案与业务系统相对应。
本申请实施例中,可以针对不同的业务系统,匹配对应的数据缓存方案,在具体的数据缓存中不同业务系统的数据缓存方案略有不同,主要体现在缓存初始化、过期参数设置、主键配置等。
可选地,确定与待缓存数据匹配的目标缓存方案包括:
步骤1,提取待缓存数据中的业务域标识,业务域标识用于标记缓存数据所属的业务系统;
步骤2,在缓存方案匹配器中查找与业务域标识匹配的目标缓存方案,每个缓存方案包括缓存的类型、缓存依赖的主键及缓存的位置,缓存方案匹配器为集成多个缓存方案的数据库,主键与业务系统相匹配。
本申请实施例中,通过全局service接入所有的业务系统和所有待缓存数据,在缓存方案匹配器中查找待缓存数据中携带的业务域标识,从而找到相应业务系统的目标缓存方案。该目标缓存方案中记载了对该业务系统获取到的待缓存数据,应该设置什么过期参数、配置什么主键,即key,以及以什么缓存类型进行缓存、缓存位置等。而不再需要对每一个单独的业务系统进行缓存系统的开发。
步骤S206,按照目标缓存方案对待缓存数据进行缓存。
在本申请实施例中,在为待缓存数据找到最佳的目标缓存方案后,即可以按照目标缓存方案对待缓存数据及进行处理。
可选地,按照目标缓存方案对待缓存数据进行缓存包括:
步骤1,确定待缓存数据的缓存生命周期参数,生命周期参数中包括过期参数,过期参数用于过期缓存数据,并在达到过期参数指示的过期条件的情况下,释放与缓存数据绑定的主键;
步骤2,将待缓存数据与第一目标主键绑定,并按照缓存生命周期参数设置待缓存数据的生命周期,以进行缓存初始化;
步骤3,将待缓存数据以目标缓存类型缓存至目标位置。
本申请实施例中,上述生命周期参数中包括过期参数,过期参数用于指示缓存数据什么时候自动过期,即自动清除旧数据。数据缓存之前,系统为其分配第一目标主键,从而可以根据该第一目标主键对与该第一目标主键绑定的缓存数据进行访问,参数设置完毕,主键绑定完成,即完成了数据缓存的初始化,完成初始化之后,按照目标缓存方案指示的缓存类型和缓存地址,将待缓存数据以目标缓存类型缓存至目标位置。
采用本申请技术方案,通过抽象了一个应用层面的全局服务,任何想接入本地缓存的功能都通过同一个服务接入,只是为各功能分配不同的业务域标识,这样将多点管理聚合为单点管理,便于把控整体资源,防止出现因系统内存过度分配导致的不稳定问题。
可选地,按照目标缓存方案对待缓存数据进行缓存之后,该方法还包括按照如下方式对缓存数据进行过期:
步骤1,每经过第一时长遍历一次与缓存数据绑定的主键;
步骤2,确定主键的访问次数;
步骤3,在访问次数小于或等于目标次数的情况下,利用计时器进行计时,计时器用于在访问次数大于目标次数的情况下停止计时并重置计时时间;
步骤4,在计时器的计时时间达到过期参数中的过期时间的情况下,清除与主键绑定的缓存数据,并释放主键。
本申请实施例中,可以通过设置schedule来主动将缓存过期,提前释放对象,而不是在下一次请求到来之前一直占用内存空间。
例如,对于非热点数据,非热点数据的特点是读取频率较低,若不主动清理,会有大量对象持续占用内存空间,所以可以通过调度实现主动过期。具体的,可以对非热点数据设置expireAfterWrite参数进行主动过期。调度系统每经过第一时长遍历一次所有主键,上述第一时长可以是5分钟,还可以根据实际需要进行设置。遍历各个主键的同时确定各个主键的访问次数。主键的访问次数是根据用户进行数据查询、更新、删除等操作进行统计的,用户每通过主键访问一次缓存数据,该主键的访问次数增加。对于非热点数据,用户访问频率较低,如果不进行主动过期的话,这些非热点数据则会长期占据内存,因此对于缓存数据,可以设置计时器,从缓存数据第一次写进内存中开始计时,即从目标主键的访问次数为1次时开始计时,在一定时间阈值内,如果访问次数没有增加到目标次数,则触发expireAfterWrite,从而主动将缓存数据过期(自动清理),并将与缓存数据绑定的目标主键释放。上述时间阈值即为过期时间,上述目标次数为非热点数据与热点数据之间访问次数的临界点。反之,若该时间阈值内目标主键的访问次数超过了目标次数,则表示该缓存数据为热点数据,访问频率较高,不进行主动过期,此时计时器停止计时并重置计时时间。
对于热点数据,热点数据的特点是访问频率较大,若设置了expireAfterWrite参数进行主动过期,则会导致触发请求时缓存被过期的操作,此时当前请求会一直等待刷新结果,对整体性能产生影响,因此热点数据不设置expireAfterWrite参数,而是依赖调度来完成数据的过期及刷新操作,让热点数据以无界缓存的方式一直保留在内存中。
可选地,每经过第一时长遍历一次与缓存数据绑定的主键之后,对缓存数据进行过期还包括:
确定最后一次根据主键在对应的缓存数据中写入新数据的第一时间;
在第一时间至当前时间的时间长度大于过期时间的时间长度的情况下,清除与主键绑定的缓存数据,并释放主键。
本申请实施例中,还可以在写入时间较长时触发主动过期,调度系统每经过第一时长遍历一次所有主键,遍历每个主键时确定最后一次访问主键时写入数据的第一时间,从而在第一时间至当前时间的时间长度大于货期时间的时间长度时,清除与主键绑定的缓存数据,并释放主键。
本申请实施例中,可以采用quartz框架实现定时触发机制。Quartz框架的核心是调度器。调度器负责管理Quartz应用运行时环境。调度器不是靠自己做所有的工作,而是依赖框架内一些非常重要的部件。Quartz不仅仅是线程和线程管理。为确保可伸缩性,Quartz采用了基于多线程的架构。启动时,框架初始化一套worker线程,这套线程被调度器用来执行预定的作业。
采用本申请技术方案,还通过调度系统记录和管理所有缓存数据对应的key,在通过定时遍历key,查看key的访问、写入时间等参数,然后将一定时间内没有访问/写入的数据进行主动清理工作,这样就不需要等下次访问才清理,提前释放内存空间。
可选地,按照目标缓存方案对待缓存数据进行缓存之后,该方法还包括按照如下方式对缓存数据进行更新:
步骤1,每经过第二时长遍历一次与缓存数据绑定的主键,并确定各个主键所绑定的缓存数据的写入时间;
步骤2,在目标缓存数据的写入时间大于更新时间阈值的情况下,提取与目标缓存数据绑定的第二目标主键;
步骤3,确定第二目标主键所匹配的目标业务系统;
步骤4,从目标业务系统中获取目标数据;
步骤5,利用目标数据对目标缓存数据进行覆盖或修改,以更新目标缓存数据。
可选地,从目标业务系统中获取目标数据包括:
调用数据获取接口;
确定数据获取接口在目标业务系统中实现的目标获取函数;
利用目标获取函数获取目标业务系统中产生的目标数据。
本申请实施例中,可以封装一个抽象接口用于缓存刷新,具体的刷新方法由各业务域自己实现。本申请可以通过比较没有数据写入的持续时长和过期时间的时长,从而确定需要数据更新的目标缓存数据。上述第二时长可以是1分钟,还可以根据实际需要进行设置。如果确定了目标缓存数据需要更新,则找到改目标缓存数据对应的第二目标主键,并确定与第二目标主键对应的目标业务系统,从而确定数据获取的抽象接口在该目标业务系统上的具体实现,最终依靠目标业务系统自己实现的数据获取函数,获取更新的目标数据。
本申请技术方案应用到实际生产中后,可以使本地缓存更可控、更高效及稳定,例如不需要同时使用expireAfterWrite和refreshAfterWrite,因为这两个参数都是依赖被动访问时才会触发,完全可以根据缓存类型设置,例如非热点数据,可以只设置expireAfterWrite和schedule,让缓存一定时间不访问主动释放内存空间;热点数据则不设置expireAfterWrite,而是通过缓存数据管理模块的调度来完成数据刷新操作,让缓存信息一直以定期更新的状态持续保留在内存中,这样就不会出现本地内存信息过旧、本地内存穿透、突发流量阻塞、突发流量返回null或旧值的问题了。
根据本申请实施例的又一方面,如图3所示,提供了一种数据缓存装置,包括:
数据获取模块301,用于获取待缓存数据,待缓存数据为业务系统中产生的数据;
策略匹配模块303,用于确定与待缓存数据匹配的目标缓存方案,缓存方案与业务系统相对应;
数据缓存模块305,用于按照目标缓存方案对待缓存数据进行缓存。
需要说明的是,该实施例中的数据获取模块301可以用于执行本申请实施例中的步骤S202,该实施例中的策略匹配模块303可以用于执行本申请实施例中的步骤S204,该实施例中的数据缓存模块305可以用于执行本申请实施例中的步骤S206。
此处需要说明的是,上述模块与对应的步骤所实现的示例和应用场景相同,但不限于上述实施例所公开的内容。需要说明的是,上述模块作为装置的一部分可以运行在如图1所示的硬件环境中,可以通过软件实现,也可以通过硬件实现。
可选地,策略匹配模块包括:
标识提取单元,用于提取待缓存数据中的业务域标识,业务域标识用于标记缓存数据所属的业务系统;
策略查找单元,用于在缓存方案匹配器中查找与业务域标识匹配的目标缓存方案,每个缓存方案包括缓存的类型、缓存依赖的主键及缓存的位置,缓存方案匹配器为集成多个缓存方案的数据库,主键与业务系统相匹配。
可选地,数据缓存模块包括:
参数配置单元,用于确定待缓存数据的缓存生命周期参数,生命周期参数中包括过期参数,过期参数用于过期缓存数据,并在达到过期参数指示的过期条件的情况下,释放与缓存数据绑定的主键;
缓存初始化单元,用于将待缓存数据与第一目标主键绑定,并按照缓存生命周期参数设置待缓存数据的生命周期,以进行缓存初始化;
数据缓存单元,用于将待缓存数据以目标缓存类型缓存至目标位置。
可选地,该装置还包括缓存数据过期模块,包括:
主键遍历单元,用于每经过第一时长遍历一次与缓存数据绑定的主键;
访问次数确定单元,用于确定主键的访问次数;
计时单元,用于在访问次数小于或等于目标次数的情况下,利用计时器进行计时,计时器用于在访问次数大于目标次数的情况下停止计时并重置计时时间;
第一数据过期单元,用于在计时器的计时时间达到过期参数中的过期时间的情况下,清除与主键绑定的缓存数据,并释放主键。
可选地,缓存数据过期模块,还包括:
第一写入时间确定单元,用于每经过第一时长遍历一次与缓存数据绑定的主键之后,确定最后一次根据主键在对应的缓存数据中写入新数据的第一时间;
第二数据过期单元,用于在第一时间至当前时间的时间长度大于过期时间的时间长度的情况下,清除与主键绑定的缓存数据,并释放主键。
可选地,该装置还包括缓存数据更新模块,包括:
第二写入时间确定单元,用于每经过第二时长遍历一次与缓存数据绑定的主键,并确定各个主键所绑定的缓存数据的写入时间;
主键确定单元,用于在目标缓存数据的写入时间大于更新时间阈值的情况下,提取与目标缓存数据绑定的第二目标主键;
业务系统确定单元,用于确定第二目标主键所匹配的目标业务系统;
目标数据获取单元,用于从目标业务系统中获取目标数据;
数据更新单元,用于利用目标数据对目标缓存数据进行覆盖或修改,以更新目标缓存数据。
可选地,目标数据获取单元包括:
抽象接口调用子单元,用于调用数据获取接口;
接口实现确定子单元,用于确定数据获取接口在目标业务系统中实现的目标获取函数;
目标数据获取子单元,用于利用目标获取函数获取目标业务系统中产生的目标数据。
根据本申请实施例的另一方面,本申请提供了一种电子设备,如图4所示,包括存储器401、处理器403、通信接口405及通信总线407,存储器401中存储有可在处理器403上运行的计算机程序,存储器401、处理器403通过通信接口405和通信总线407进行通信,处理器403执行计算机程序时实现上述方法的步骤。
上述电子设备中的存储器、处理器通过通信总线和通信接口进行通信。所述通信总线可以是外设部件互连标准(Peripheral Component Interconnect,简称PCI)总线或扩展工业标准结构(Extended Industry Standard Architecture,简称EISA)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。
存储器可以包括随机存取存储器(Random Access Memory,简称RAM),也可以包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。
上述的处理器可以是通用处理器,包括中央处理器(Central Processing Unit,简称CPU)、网络处理器(Network Processor,简称NP)等;还可以是数字信号处理器(Digital Signal Processing,简称DSP)、专用集成电路(Application SpecificIntegrated Circuit,简称ASIC)、现场可编程门阵列(Field-Programmable Gate Array,简称FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
根据本申请实施例的又一方面还提供了一种具有处理器可执行的非易失的程序代码的计算机可读介质。
可选地,在本申请实施例中,计算机可读介质被设置为存储用于所述处理器执行以下步骤的程序代码:
获取待缓存数据,待缓存数据为业务系统中产生的数据;
确定与待缓存数据匹配的目标缓存方案,缓存方案与业务系统相对应;
按照目标缓存方案对待缓存数据进行缓存。
可选地,本实施例中的具体示例可以参考上述实施例中所描述的示例,本实施例在此不再赘述。
本申请实施例在具体实现时,可以参阅上述各个实施例,具有相应的技术效果。
可以理解的是,本文描述的这些实施例可以用硬件、软件、固件、中间件、微码或其组合来实现。对于硬件实现,处理单元可以实现在一个或多个专用集成电路(ApplicationSpecific Integrated Circuits,ASIC)、数字信号处理器(Digital Signal Processing,DSP)、数字信号处理设备(DSP Device,DSPD)、可编程逻辑设备(Programmable LogicDevice,PLD)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)、通用处理器、控制器、微控制器、微处理器、用于执行本申请所述功能的其它电子单元或其组合中。
对于软件实现,可通过执行本文所述功能的单元来实现本文所述的技术。软件代码可存储在存储器中并通过处理器执行。存储器可以在处理器中或在处理器外部实现。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实施例的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。需要说明的是,在本文中,诸如“第一”和“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上所述仅是本申请的具体实施方式,使本领域技术人员能够理解或实现本申请。对这些实施例的多种修改对本领域的技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本申请的精神或范围的情况下,在其它实施例中实现。因此,本申请将不会被限制于本文所示的这些实施例,而是要符合与本文所申请的原理和新颖特点相一致的最宽的范围。

Claims (9)

1.一种数据缓存方法,其特征在于,包括:
获取待缓存数据,其中,所述待缓存数据为业务系统中产生的数据;
确定与所述待缓存数据匹配的目标缓存方案,其中,所述目标缓存方案与所述业务系统相对应;
按照所述目标缓存方案对所述待缓存数据进行缓存;
所述确定与所述待缓存数据匹配的目标缓存方案包括:提取所述待缓存数据中的业务域标识,其中,所述业务域标识用于标记所述待缓存数据所属的所述业务系统;在缓存方案匹配器中查找与所述业务域标识匹配的所述目标缓存方案,其中,每个缓存方案包括缓存的类型、缓存依赖的主键及缓存的位置,所述缓存方案匹配器为集成多个所述缓存方案的数据库,所述主键与所述业务系统相匹配。
2.根据权利要求1所述的方法,其特征在于,按照所述目标缓存方案对所述待缓存数据进行缓存包括:
确定所述待缓存数据的缓存生命周期参数,其中,所述缓存生命周期参数中包括过期参数,所述过期参数用于过期缓存数据,并在达到所述过期参数指示的过期条件的情况下,释放与所述缓存数据绑定的主键;
将所述待缓存数据与第一目标主键绑定,并按照所述缓存生命周期参数设置所述待缓存数据的生命周期,以进行缓存初始化;
将所述待缓存数据以目标缓存类型缓存至目标位置。
3.根据权利要求2所述的方法,其特征在于,按照所述目标缓存方案对所述待缓存数据进行缓存之后,所述方法还包括按照如下方式对缓存数据进行过期:
每经过第一时长遍历一次与所述缓存数据绑定的主键;
确定所述主键的访问次数;
在所述访问次数小于或等于目标次数的情况下,利用计时器进行计时,其中,所述计时器用于在所述访问次数大于目标次数的情况下停止计时并重置计时时间;
在所述计时器的计时时间达到所述过期参数中的过期时间的情况下,清除与所述主键绑定的所述缓存数据,并释放所述主键。
4.根据权利要求3所述的方法,其特征在于,每经过第一时长遍历一次与所述缓存数据绑定的主键之后,对所述缓存数据进行过期还包括:
确定最后一次根据所述主键在对应的所述缓存数据中写入新数据的第一时间;
在所述第一时间至当前时间的时间长度大于所述过期时间的时间长度的情况下,清除与所述主键绑定的所述缓存数据,并释放所述主键。
5.根据权利要求1至4任一所述的方法,其特征在于,按照所述目标缓存方案对所述待缓存数据进行缓存之后,所述方法还包括按照如下方式对缓存数据进行更新:
每经过第二时长遍历一次与所述缓存数据绑定的主键,并确定各个所述主键所绑定的所述缓存数据的写入时间;
在目标缓存数据的写入时间大于更新时间阈值的情况下,提取与所述目标缓存数据绑定的第二目标主键;
确定所述第二目标主键所匹配的目标业务系统;
从所述目标业务系统中获取目标数据;
利用所述目标数据对所述目标缓存数据进行覆盖或修改,以更新所述目标缓存数据。
6.根据权利要求5所述的方法,其特征在于,从所述目标业务系统中获取目标数据包括:
调用数据获取接口;
确定所述数据获取接口在所述目标业务系统中实现的目标获取函数;
利用所述目标获取函数获取所述目标业务系统中产生的所述目标数据。
7.一种数据缓存装置,其特征在于,包括:
数据获取模块,用于获取待缓存数据,其中,所述待缓存数据为业务系统中产生的数据;
策略匹配模块,用于确定与所述待缓存数据匹配的目标缓存方案,其中,所述目标缓存方案与所述业务系统相对应;
数据缓存模块,用于按照所述目标缓存方案对所述待缓存数据进行缓存;
所述策略匹配模块,具体用于:提取所述待缓存数据中的业务域标识,其中,所述业务域标识用于标记所述待缓存数据所属的所述业务系统;在缓存方案匹配器中查找与所述业务域标识匹配的所述目标缓存方案,其中,每个缓存方案包括缓存的类型、缓存依赖的主键及缓存的位置,所述缓存方案匹配器为集成多个所述缓存方案的数据库,所述主键与所述业务系统相匹配。
8.一种电子设备,包括存储器、处理器、通信接口及通信总线,所述存储器中存储有可在所述处理器上运行的计算机程序,所述存储器、所述处理器通过所述通信总线和所述通信接口进行通信,其特征在于,所述处理器执行所述计算机程序时实现上述权利要求1至6任一项所述的方法的步骤。
9.一种具有处理器可执行的非易失的程序代码的计算机可读介质,其特征在于,所述程序代码使所述处理器执行所述权利要求1至6任一所述方法。
CN202011550774.3A 2020-12-24 2020-12-24 数据缓存方法、装置、设备及计算机可读介质 Active CN112559573B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011550774.3A CN112559573B (zh) 2020-12-24 2020-12-24 数据缓存方法、装置、设备及计算机可读介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011550774.3A CN112559573B (zh) 2020-12-24 2020-12-24 数据缓存方法、装置、设备及计算机可读介质

Publications (2)

Publication Number Publication Date
CN112559573A CN112559573A (zh) 2021-03-26
CN112559573B true CN112559573B (zh) 2024-04-16

Family

ID=75033378

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011550774.3A Active CN112559573B (zh) 2020-12-24 2020-12-24 数据缓存方法、装置、设备及计算机可读介质

Country Status (1)

Country Link
CN (1) CN112559573B (zh)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113608886B (zh) * 2021-06-30 2024-04-26 北京新氧科技有限公司 一种函数接入缓存方法、装置、电子设备及存储介质
CN113886439A (zh) * 2021-09-17 2022-01-04 腾讯音乐娱乐科技(深圳)有限公司 管理缓存数据的方法、设备及存储介质
CN113806389A (zh) * 2021-09-22 2021-12-17 未鲲(上海)科技服务有限公司 一种数据处理方法、装置、计算设备与存储介质
CN114661728A (zh) * 2022-04-11 2022-06-24 亿玛创新网络(天津)有限公司 应用于redis数据库的key记录和管理的方法
CN116661706B (zh) * 2023-07-26 2023-11-14 江苏华存电子科技有限公司 一种固态硬盘的缓存清理分析方法及系统
CN118672806A (zh) * 2024-08-16 2024-09-20 深圳润世华软件和信息技术服务有限公司 多项目数据缓存方法、装置、设备及存储介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106844784A (zh) * 2017-03-14 2017-06-13 上海网易小额贷款有限公司 数据缓存方法、装置及计算机可读存储介质
CN108628891A (zh) * 2017-03-21 2018-10-09 北京京东尚科信息技术有限公司 实现数据缓存层的方法、装置、电子设备和可读存储介质
CN110968603A (zh) * 2019-11-29 2020-04-07 中国银行股份有限公司 一种数据访问方法及装置
CN111259034A (zh) * 2020-02-17 2020-06-09 腾讯科技(深圳)有限公司 一种缓存数据管理方法和相关装置
WO2020199061A1 (zh) * 2019-03-30 2020-10-08 华为技术有限公司 一种处理方法、装置及相关设备

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9942346B2 (en) * 2013-10-03 2018-04-10 Red Hat, Inc. Caching mechanism for determining validity of cached data using web application business logic

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106844784A (zh) * 2017-03-14 2017-06-13 上海网易小额贷款有限公司 数据缓存方法、装置及计算机可读存储介质
CN108628891A (zh) * 2017-03-21 2018-10-09 北京京东尚科信息技术有限公司 实现数据缓存层的方法、装置、电子设备和可读存储介质
WO2020199061A1 (zh) * 2019-03-30 2020-10-08 华为技术有限公司 一种处理方法、装置及相关设备
CN110968603A (zh) * 2019-11-29 2020-04-07 中国银行股份有限公司 一种数据访问方法及装置
CN111259034A (zh) * 2020-02-17 2020-06-09 腾讯科技(深圳)有限公司 一种缓存数据管理方法和相关装置

Also Published As

Publication number Publication date
CN112559573A (zh) 2021-03-26

Similar Documents

Publication Publication Date Title
CN112559573B (zh) 数据缓存方法、装置、设备及计算机可读介质
JP6371858B2 (ja) 複数エクステント動作のための原子書き込み
US9779127B2 (en) Integrating database management system and external cache
US9424204B2 (en) Caching method for distributed storage system, a lock server node, and a lock client node
US9507841B2 (en) Consistent backup of a distributed database system
US8499004B2 (en) File system with optimistic I/O operations on shared storage
US8819074B2 (en) Replacement policy for resource container
US8868863B2 (en) Method and apparatus for a frugal cloud file system
US9307024B2 (en) Efficient storage of small random changes to data on disk
JP2011503725A (ja) 分散型共有メモリを備えるネットワーク
CN110750507A (zh) 面向dfs的全局命名空间下的客户端持久缓存方法及系统
CN108111325B (zh) 一种资源分配方法及装置
US11449241B2 (en) Customizable lock management for distributed resources
US20170123975A1 (en) Centralized distributed systems and methods for managing operations
CN111552442A (zh) 一种基于ssd的缓存管理系统及方法
CN109062717B (zh) 数据缓存及缓存容灾方法和系统、缓存系统
WO2021257994A1 (en) Sparse file system implemented with multiple cloud services
WO2015015727A1 (ja) ストレージ装置、データアクセス方法およびプログラム記録媒体
US10606795B2 (en) Methods for managing a buffer cache and devices thereof
KR101884726B1 (ko) 데이터베이스 시스템에서 블록을 판독하기 위한 방법, 장치 및 컴퓨터 판독가능 매채에 저장된 컴퓨터-프로그램
US10685014B1 (en) Method of sharing read-only data pages among transactions in a database management system
US11726978B2 (en) Computer program for providing efficient change data capture in a database system
CN109558205B (zh) 磁盘访问方法及装置
US9146679B2 (en) Effectively limitless apparent free space on storage device
CN117056363B (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
CB02 Change of applicant information
CB02 Change of applicant information

Address after: Room 221, 2 / F, block C, 18 Kechuang 11th Street, Daxing District, Beijing, 100176

Applicant after: Jingdong Technology Holding Co.,Ltd.

Address before: Room 221, 2 / F, block C, 18 Kechuang 11th Street, Daxing District, Beijing, 100176

Applicant before: Jingdong Digital Technology Holding Co.,Ltd.

GR01 Patent grant
GR01 Patent grant