一种基于Redis的本地缓存刷新实现方法及装置与流程

文档序号:14724235发布日期:2018-06-19 03:36阅读:460来源:国知局

本发明涉及系统缓存技术领域,尤其涉及一种基于Redis的本地缓存刷新实现方法及装置。



背景技术:

集群环境中系统的内存利用率低,其中很大一部分原因是因为无法实现缓存数据更新后无法方便有效的更新集群下所有节点的本地缓存。

现有技术中为了提高系统的内存利用效率,通常采用重启集群环境中的应用,但是重启不仅对系统的使用有影响,而且需要更新的缓存一样重新加载了,造成不必要的资源浪费,从而造成系统本地缓存使用的少,系统性能提升慢,内存利用率低。在本地缓存刷新时,现有的系统基础数据集中在一个系统维护,更新基础数据后,需要刷新其他应用到的系统,只能通过重启或分别调用其他系统的各个节点,当其他系统新增节点的时候,需要同时修改基础数据系统的配置,维护起来很麻烦,容易漏掉。因此现有技术中,集群环境的本地缓存更新,无法更新将集群下其他所有节点的本地缓存同步更新,而且外部系统更新数据后,本系统的本地缓存更新不方便,系统内存利用率低。

因此,现有技术还有待于改进和发展。



技术实现要素:

鉴于上述现有技术的不足,本发明的目的在于提供一种基于Redis的本地缓存刷新实现方法及装置,旨在解决现有技术中集群环境的本地缓存更新时,系统内存利用率低的问题。

本发明的技术方案如下:

一种基于Redi s的本地缓存刷新实现方法,所述方法包括:

在本地缓存管理方法的工程中引入Redis数据包;

定义一个通用的缓存订阅组件和通用的发布接口;

在待更新本地缓存的系统引入Redis数据包,并引入通用的缓存订阅组件和通用的发布接口;

定义一个待更新本地缓存的系统对应的专属频道,根据专属频道在待刷新的缓存对应的节点添加通用的发布接口,根据发布接口刷新本地缓存。

可选地,所述定义一个通用的缓存订阅组件,包括:

定义一个通用的缓存订阅组件,所述通用的缓存订阅组件具体用于缓存整个缓存、按照缓存名刷新和按照缓存名以及缓存值刷新本地缓存数据。

可选地,所述定义一个通用发布接口,还包括:

定义一个通用发布接口及通用发布接口的发布模式,所述发布模式包括按照业务对象刷新,按照发布的缓存名和缓存值进行刷新,以及按照消息进行刷新。

可选地,所述定义一个通用的缓存订阅组件,还包括:

根据缓存订阅组件获取Redis发布订阅频道,通过线程池管理刷新的线程,并通过反射机制处理消息。

可选地,所述定义一个待更新本地缓存的系统对应的专属频道,根据专属频道在待刷新的缓存对应的节点添加通用的发布接口,根据发布接口刷新本地缓存:

定义一个待更新本地缓存的系统对应的专属频道,根据专属频道在待刷新的缓存对应的节点添加通用的发布接口;

通过通用的发布接口通过发布模式发布刷新缓存的消息;

订阅者获取刷新缓存的消息,根据刷新缓存的消息刷新自己的本地缓存。

本发明另一实施例还提供了一种基于Redis的本地缓存刷新实现装置,包括:

存储器、处理器、以及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现以下步骤:

在本地缓存管理方法的工程中引入Redis数据包;

定义一个通用的缓存订阅组件和通用的发布接口;

在待更新本地缓存的系统引入Redis数据包,并引入通用的缓存订阅组件和通用的发布接口;

定义一个待更新本地缓存的系统对应的专属频道,根据专属频道在待刷新的缓存对应的节点添加通用的发布接口,根据发布接口刷新本地缓存。

可选地,所述计算机程序被所述处理器执行时还实现以下步骤:

定义一个通用的缓存订阅组件,所述通用的缓存订阅组件具体用于缓存整个缓存、按照缓存名刷新和按照缓存名以及缓存值刷新本地缓存数据。

可选地,所述计算机程序被所述处理器执行时还实现以下步骤:

定义一个通用发布接口及通用发布接口的发布模式,所述发布模式包括按照业务对象刷新,按照发布的缓存名和缓存值进行刷新,以及按照消息进行刷新。

可选地,所述计算机程序被所述处理器执行时还实现以下步骤:

根据缓存订阅组件获取Redis发布订阅频道,通过线程池管理刷新的线程,并通过反射机制处理消息。

本发明的又一实施例还提供了一种非易失性计算机可读存储介质,其特征在于,所述非易失性计算机可读存储介质存储有计算机可执行指令,该计算机可执行指令被一个或多个处理器执行时,可使得所述一个或多个处理器执行上述的基于Redis的本地缓存刷新实现方法。

有益效果:本发明公开了一种基于Redis的本地缓存刷新实现方法及装置,实现在系统本地缓存更新,集群下面所有节点也可自动更新,提高了本地缓存的缓存灵活性,扩大了本地缓存的使用场景,提高了系统的内存利用率。

附图说明

下面将结合附图及实施例对本发明作进一步说明,附图中:

图1为本发明一种基于Redis的本地缓存刷新实现方法较佳实施例的流程图。

图2为本发明一种基于Redis的本地缓存刷新实现装置的较佳实施例的硬件结构图。

具体实施方式

本发明提供一种基于Redis的本地缓存刷新实现方法及装置,为使本发明的目的、技术方案及效果更加清楚、明确,以下对本发明进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。

Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的接口API。本发明实施例中提出一种基于Redis的本地缓存刷新实现方法,首先利用Redis的Pub/Sub机制实现集群下面所有节点的缓存的通知更新功能,以及异步系统刷新缓存功能。其次利用JAVA的抽象和多态特性,实现一个通用的缓存订阅组件,开发一套通用的订阅更新缓存实现,使用的时候只要配置文件直接引人即可。最后定义一个通用的发布接口,并且实现多种发布方式的发布,免去了开发人员二次开发。使用起来简单方便。

其中Pub/Sub机制中Publ isher公布者的缩写,Sub是Subscriber的缩写,Pub/Sub机制是指发布订阅机制。Redis也支持消息的发布订阅模式,订阅者(Sub)通过SUBSCRIBE命令和PSUBSCRIBE命令向redis服务订阅频道(channel),当发布者通过PUBLISH命令向chinnel发布命令时,订阅该频道的客户端都会受到此消息。

以下结合附图对本发明实施例进行说明。

请参阅图1,图1为本发明一种基于Redis的本地缓存刷新实现方法较佳实施例的流程图。如图1所示,其包括步骤:

步骤S100、在本地缓存管理方法的工程中引入Redis数据包;

步骤S200、定义一个通用的缓存订阅组件和通用的发布接口;

步骤S300、在待更新本地缓存的系统引入Redis数据包,并引入通用的缓存订阅组件和通用的发布接口;

步骤S400、定义一个待更新本地缓存的系统对应的专属频道,根据专属频道在待刷新的缓存对应的节点添加通用的发布接口,根据发布接口刷新本地缓存。

具体实施时,以使用JAVA语言的系统为例进行介绍,在基于JVM内存的本地缓存管理方法的工程中引入Redis的数据包,Redis的数据包是指Redis的相关jar包。JVM是Java Virtual Machine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。利用Redis的Pub/Sub机制实现集群下面所有节点的缓存的通知更新功能,以及异步系统刷新缓存功能。

通过JAVA的抽象和多态特性,实现一个通用的缓存订阅组件AbstractSubscribeListener,使得所有需要更新缓存的类统一实现该订阅者逻辑,便于后续管理;

通过JAVA的面向接口编程原则,定义一个通用的发布接口IGuavaCachePubl isher,实现多种发布方式的发布。

使用该缓存组件的系统,首先引入该jar包,在spring文件中引入IGuavaCacheSubscribeListener和IGguavaCachePubl isher,定义一个本系统专属的Redis Pub/Sub频道,在需要缓存刷新的地方注入IGuavaCachePubl isher,按照接口要求就可以刷新缓存了。

可选地,步骤S200中定义一个通用的缓存订阅组件,包括:

定义一个通用的缓存订阅组件,所述通用的缓存订阅组件具体用于缓存整个缓存、按照缓存名刷新和按照缓存名以及缓存值刷新本地缓存数据。

具体地,通用的缓存订阅组件会提供基本的缓存整个缓存、按照cacheName刷新、按照缓存名c acheName和缓存值cacheKey刷新缓存数据等功能。

可选地,步骤S200中定义一个通用的缓存订阅组件还包括:

根据缓存订阅组件获取Redis发布订阅频道,通过线程池管理刷新的线程,并通过反射机制处理消息。

具体实施时,缓存订阅组件AbstractSubscribeListener需要对Redis提供的JedisPubSub抽象类增加一些本缓存机制特有的功能,比如获取Redis发布订阅频道,通过线程池管理消费刷新的线程。以及通过反射机制处理消息功能。具体地,缓存订阅组件AbstractSubscribeListener用于实现设置Redis的连接池和消息订阅频道,设置线程池数量,以及最重要的通过反射机制实现刷新整个缓存,或者缓存名cacheName刷新功能,以及更加精细的根据缓存名cacheName,缓存值cacheKey刷新缓存数据功能。

可选地,步骤S200中定义一个通用发布接口,包括:

定义一个通用发布接口及通用发布接口的发布模式,所述发布模式包括按照业务对象刷新,按照发布的缓存名和缓存值进行刷新,以及按照消息进行刷新。

具体实施时,定义一个通用发布接口IGuavaCachePubl isher,同时定义了通用发布接口IGuavaCachePubl isher的分布模式。通用发布接口IGuavaCachePubl isher分别定义了三种发布模式,即按照业务对象刷新,按照发布的缓存名cacheName和缓存值cacheKey刷新,以及按照JSON格式的消息message刷新。方便程序开发者实际应用中使用。JSON(JavaScript Object Notat ion,JS对象标记)是一种轻量级的数据交换格式。它基于ECMAScript(w3c制定的js规范)的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。

可选地,步骤S400包括:定义一个待更新本地缓存的系统对应的专属频道,根据专属频道在待刷新的缓存对应的节点添加通用的发布接口;

通过通用的发布接口通过发布模式发布刷新缓存的消息;

订阅者获取刷新缓存的消息,根据刷新缓存的消息刷新自己的本地缓存。

实际使用的缓存刷新的业务类,注入发布者。通用的发布接口IGuavaCachePubl isher通过发布的发布模式发布刷新缓存的消息。让订阅者消费消息,刷新自己的本地缓存。发布者也可以是其他系统,但是需要与订阅者在同一套redis中。所以这样也能实现外部系统刷新集群下该系统所以节点的本地缓存功能。

本发明另一实施例提供一种基于Redis的本地缓存刷新实现装置,如图2所示,该基于Redis的本地缓存刷新实现装置10包括:

一个或多个处理器110以及存储器120,以及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述计算机程序被处理器执行实现上述实施例所描述的基于Redis的本地缓存刷新实现方法。图2中以一个处理器110为例进行介绍,处理器110和存储器120可以通过总线或者其他方式连接,图2中以通过总线连接为例。

上述基于Redis的本地缓存刷新实现装置10可执行本发明实施例所提供的基于Redis的本地缓存刷新实现方法,具备执行方法相应的功能模块和有益效果。未在基于Redis的本地缓存刷新实现装置10实施例中详尽描述的技术细节,可参见本发明实施例所提供的基于Redis的本地缓存刷新实现方法。

本发明实施例提供了一种非易失性计算机可读存储介质,计算机可读存储介质存储有计算机可执行指令,该计算机可执行指令被一个或多个处理器执行,例如,执行以上描述的图1中的方法步骤S100至步骤S400。

本发明的另一种实施例提供了一种计算机程序产品,计算机程序产品包括存储在非易失性计算机可读存储介质上的计算机程序,计算机程序包括程序指令,当程序指令被处理器执行时,使所述处理器执行上述方法实施例的基于Redis的本地缓存刷新实现方法。例如,执行以上描述的图1中的方法步骤S100至步骤S400。

以上所描述的装置实施例仅仅是示意性的,其中作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际需要选择其中的部分或者全部模块来实现本实施例方案的目的。

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

应当理解的是,本发明的应用不限于上述的举例,对本领域普通技术人员来说,可以根据上述说明加以改进或变换,所有这些改进和变换都应属于本发明所附权利要求的保护范围。

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