一种数据二级缓存的方法和装置与流程

文档序号:22759892发布日期:2020-10-31 09:58阅读:103来源:国知局
一种数据二级缓存的方法和装置与流程

本发明涉及计算机领域,尤其涉及一种数据二级缓存的方法和装置。



背景技术:

现有技术中在用户端,服务器端之间存在大量通信和大量的数据请求时,会出现导致请求速度缓慢,服务器端响应速度慢,严重影响用户体验的情况。这时需要一套消息缓存方案,能够来减少热点数据的查询次数,减少服务的响应时间进而提升服务的方法。



技术实现要素:

为了解决现有技术中数据缓存工作量庞大,效率低下的问题,本发明提供一种数据二级缓存的方法和装置。

第一方面,本发明提供一种数据二级缓存的方法,该方法包括:

创建消息发送方和消息订阅方;

消息订阅方接收发送方发布至预设频道内的消息;

根据消息更新本地缓存;

若本地缓存异常,则进行二级缓存更新;其中本地缓存异常包括:本地无缓存或缓存失效。

进一步地,若本地缓存异常,则进行二级缓存更新包括:

若本地缓存异常,则增加同步锁同步数据;

查询redis内是否存在缓存数据;

若存在,则利用当前redis内的缓存数据更新本地缓存数据,释放同步锁。

进一步地,查询redis内是否存在缓存数据还包括:

若不存在,则查询数据库是否存在缓存数据;

若存在,则利用数据库内的数据更新redis内的数据和本地缓存数据,释放同步锁。

进一步地,查询数据库是否存在缓存数据还包括:

若不存在,则将本地缓存数据设置为默认值,更新redis内的数据,释放同步锁。

进一步地,方法还包括:

本地缓存设置预设时间;

当数据更新时间超过预设时间,则获取redis内的缓存数据作为当前本地缓存数据。

第二方面,本发明提供一种数据二级缓存的装置,该装置包括:

创建模块,用于创建消息发送方和消息订阅方;

发送模块,用于消息订阅方接收发送方发布至预设频道内的消息;

更新模块,用于根据消息更新本地缓存;

二级缓存模块,用于若本地缓存异常,则进行二级缓存;其中本地缓存异常包括:本地无缓存或缓存失效。

进一步地,二级缓存模块包括:

同步锁单元,用于若本地缓存异常,则增加同步锁同步数据;

查询redis缓存数据单元,用于查询redis内是否存在缓存数据;

更新本地缓存数据单元,用于若存在,则利用当前redis内的缓存数据更新本地缓存数据,释放同步锁。

进一步地,查询redis缓存数据单元还包括:

查询数据库单元,用于若不存在,则查询数据库是否存在缓存数据;

更新redis和本地缓存数据单元,用于若存在,则利用数据库内的数据更新redis内的数据和本地缓存数据,释放同步锁。

第三方面,本发明提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现第一方面提供的数据二级缓存的方法的步骤。

第四方面,本发明提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现第一方面提供的数据二级缓存的方法的步骤。

本发明对新增节点/服务,消息订阅方订阅指定的频道即可,然后根据订阅的消息判断本地缓存情况是否需要进行二级缓存更新,这样保证各个服务的数据一致性。通过增加本地缓存和redis缓存来减少热点数据的查询次数,减少服务的响应时间,降低数据库或接口依赖,提高吞吐量,从而达到提升服务性能的目的。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明实施例提供的数据二级缓存的方法流程示意图;

图2为本发明实施例提供的数据查询的流程示意图;

图3为本发明实施例提供的数据更新的流程示意图;

图4为本发明实施例提供的数据二级缓存的装置框图;

图5为本发明实施例提供的电子设备框图。

具体实施方式

为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。

需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。

需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。

现有的服务器端之间存在大量通信和大量的数据请求时,会出现导致请求速度缓慢,服务器端响应速度慢,严重影响用户体验的情况,为了解决上述问题,本发明实施例提供一种数据二级缓存的方法,如图1,该方法包括:

步骤s101,创建消息发送方和消息订阅方;

步骤s102,消息订阅方接收发送方发布至预设频道内的消息;

步骤s103,根据消息更新本地缓存;

步骤s104,若本地缓存异常,则进行二级缓存更新;其中本地缓存异常包括:本地无缓存或缓存失效。

具体为,创建消息发布者,指定频道channel_test,创建消息订阅者,订阅频道channel_test,消息发布者,发布新消息,更新redis数据,更新数据库数据,订阅者异步接收消息,更新本地缓存。若本地无缓存或缓存失效,则进行二级缓存更新。其中二级缓存主要通过增加本地缓存和redis缓存来减少热点数据的查询次数。当数据有更新时,更新当前节点的本地缓存和redis缓存,同时使用redis的发布/订阅功能,通知其他节点使个节点的本地缓存失效。其中,redis发布订阅(pub/sub)是一种消息通信模式:发送者(pub)发送消息至指定频道,订阅者(sub)订阅指定频道接收消息。异步消息:两个通信应用之间可以不用同时在线等待,任何一方只需各自处理自己的业务,比如发送方发送消息以后不用等待接收方的响应,可以接着处理其他的任务。也就是说发送方和接收方都是相互独立存在的,发送方只管发送,接收方只能接收,无须去等待对方的响应。

本发明对新增节点/服务,消息订阅方订阅指定的频道即可,然后根据订阅的消息判断本地缓存情况是否需要进行二级缓存更新,这样保证各个服务的数据一致性。通过增加本地缓存和redis缓存来减少热点数据的查询次数,减少服务的响应时间,降低数据库或接口依赖,提高吞吐量,从而达到提升服务性能的目的。

基于上述各实施例的内容,作为一种可选实施例:若本地缓存异常,则进行二级缓存更新包括:

若本地缓存异常,则增加同步锁同步数据;

查询redis内是否存在缓存数据:若存在,则利用当前redis内的缓存数据更新本地缓存数据,释放同步锁;若不存在,则查询数据库是否存在缓存数据:若存在,则利用数据库内的数据更新redis内的数据和本地缓存数据,释放同步锁;若不存在,则将本地缓存数据设置为默认值,更新redis内的数据,释放同步锁。具体可参见流程图图2。

本发明实施例利用redis的订阅/发布机制异步更新各个服务间的热点数据,减少数据操作的响应时间,降低各个服务之间的耦合度,同时保证各个服务的数据一致性,并通过增加本地缓存和redis缓存来减少热点数据的查询次数,减少服务的响应时间,降低数据库或接口依赖,提高吞吐量,从而达到提升服务性能的目的。

基于上述各实施例的内容,作为一种可选实施例:方法还包括:

本地缓存设置预设时间;

当数据更新时间超过预设时间,则获取redis内的缓存数据作为当前本地缓存数据。

具体为,本地缓存设置过期时间;其中过期时间即是预设时间;确保在网络或其他原因导致未接收到数据更新通知的情况下,可以在数据过期后从redis中获取最新的数据,从而保证各个服务之间的数据最终一致。

基于上述各实施例的内容,作为一种可选实施例:如图3,图3为本发明实施例提供的数据更新的流程示意图,详细步骤如下:

步骤1:数据更新;

步骤2:更新数据库数据;

步骤3:判断当前操作是否成功,若操作成功则执行步骤4;若操作不成功则执行步骤6;

步骤4:更新本地缓存和redis缓存;

步骤5:使用redis订阅发布功能,通知其他节点,本地缓存失效;

步骤6:结束。

根据本发明的再一个方面,本发明实施例提供数据二级缓存的装置,参见图4,图4为本发明实施例提供的数据二级缓存的装置框图。该装置用于在前述各实施例中完成本发明实施例提供的数据二级缓存。因此,在前述各实施例中的本发明实施例提供的数据二级缓存的方法中的描述和定义,可以用于本发明实施例中各执行模块的理解。

该装置包括:

创建模块401,用于创建消息发送方和消息订阅方;

发送模块402,用于消息订阅方接收发送方发布至预设频道内的消息;

更新模块403,用于根据消息更新本地缓存;

二级缓存模块404,用于若本地缓存异常,则进行二级缓存更新;其中本地缓存异常包括:本地无缓存或缓存失效。

具体的,本实施例的装置中各模块实现其功能的具体过程可参见对应的方法实施例中的相关描述,此处不再赘述。

本发明实施例对新增节点/服务,消息订阅方订阅指定的频道即可,然后根据本地缓存情况进行二级缓存更新,这样保证各个服务的数据一致性后通过增加本地缓存和redis缓存来减少热点数据的查询次数,减少服务的响应时间,降低数据库或接口依赖,提高吞吐量,从而达到提升服务性能的目的。

基于上述各实施例的内容,作为一种可选实施例:二级缓存模块包括:

同步锁单元,用于若本地缓存异常,则增加同步锁同步数据;

查询redis缓存数据单元,用于查询redis内是否存在缓存数据;

更新本地缓存数据单元,用于若存在,则利用当前redis内的缓存数据更新本地缓存数据,释放同步锁。

具体的,本实施例的装置中各模块实现其功能的具体过程可参见对应的方法实施例中的相关描述,此处不再赘述。

基于上述各实施例的内容,作为一种可选实施例:查询redis缓存数据单元还包括:

查询数据库单元,用于若不存在,则查询数据库是否存在缓存数据;

更新redis和本地缓存数据单元,用于若存在,则利用数据库内的数据更新redis内的数据和本地缓存数据,释放同步锁。

具体的,本实施例的装置中各模块实现其功能的具体过程可参见对应的方法实施例中的相关描述,此处不再赘述。

图5为本发明实施例提供的电子设备框图,如图5所示,该设备包括:处理器501、存储器502和总线503;

其中,处理器501及存储器502分别通过总线503完成相互间的通信;处理器501用于调用存储器502中的程序指令,以执行上述实施例所提供的数据二级缓存的方法,例如包括:创建消息发送方和消息订阅方;消息订阅方接收发送方发布至预设频道内的消息;根据消息更新本地缓存;若本地缓存异常,则进行二级缓存更新;其中本地缓存异常包括:本地无缓存或缓存失效。

本发明实施例提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现数据二级缓存的方法的步骤。例如包括:创建消息发送方和消息订阅方;消息订阅方接收发送方发布至预设频道内的消息;根据消息更新本地缓存;若本地缓存异常,则进行二级缓存更新;其中本地缓存异常包括:本地无缓存或缓存失效。

以上所描述的装置实施例仅仅是示意性的,其中作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分的方法。

最后,本发明中应用了具体实施例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1