本发明涉及一种缓存装置,特别是涉及一种规模性网站应用的高性能两级缓存装置,属于缓存装置技术领域。
背景技术:
随着应用系统数据量越来越大以及前端访问量越来越高,越来越多的热点数据都会存储一份至缓存服务,使访问请求先去读取缓存数据而不是去读取数据库,提高响应速度,当下缓存有本地缓存和缓存服务,其中本地缓存的代表有ehcache、缓存服务代表有redis。
本地缓存速度快但由于与应用共享内存,所以内存大小受限制,并且无法使用分布式方式部署来获取更多的存储空间和性能。
缓存服务redis作为一个独立部署的服务,应用与其使用网络通信,reids存储空间受操作系统限制,在内存空间不够以及大并发场景下可以部署多台redis组成集群来提供更好的服务。但由于redis与应用使用网络通信,应用访问量大的同时redis的访问量也会大,最后发现瓶颈从应用转移到了redis。缓存服务需要持续稳定,否则一旦宕机会影响到所有使用此缓存服务的应用,造成缓存雪崩。
技术实现要素:
本发明的主要目的是解决现有技术中缓存服务的服务压力大、应用响应速度上低于完全使用缓存服务、不易控制本地缓存所占用应用缓存及一级缓存与缓存服务数据的不一致性的问题,而提供一种规模性网站应用的高性能两级缓存装置。
本发明的目的可以通过采用如下技术方案达到:
一种规模性网站应用的高性能两级缓存装置,该缓存装置用于减少访问缓存服务redis的概率;用于保证redis服务数据与一级缓存数据的一致性;用于保证一级缓存占用存储大小可控。
进一步的,减少访问缓存服务redis的概率的包括如下步骤:
步骤1:在缓存服务redis之前加一道应用级缓存,记为一级缓存,来存储从redis获取的数据,当应用获取数据时,先访问一级缓存,如果存在则直接返回给应用;
步骤2:如果一级缓存内不存在所需数据,则继续调用二级缓存服务redis,获取到数据后,存入到一级缓存并返回给应用。
进一步的,保证redis服务的数据与一级缓存数据的一致性包括如下步骤:
步骤1:当应用程序使用本装置触发缓存修改、删除时,首先修改一级缓存,成功后再修改redis缓存,同时本装置使用redis的发布功能pub发布修改、删除的key;
步骤2:集群中的其他应用使用本装置redis的订阅功能sub监听发布修改、删除的key,接收key之后更新本地一级缓存;
步骤3:启用redis的key事件通知功能并开启key过期监听notify-keyspace-events"ex";
步骤4:本装置监听redis的key过期事件,当接收到过期的key,将本地一级缓存对应的值删除。
进一步的,保证一级缓存占用存储大小可控包括如下步骤:
步骤1:通过多种参数来控制一级缓存的大小,包括缓存个数限制、缓存空间限制和缓存淘汰策略;
步骤2:当缓存数量与占用内存空间中任意一项达到设定阀值后,根据lru策略来淘汰使用最少的缓存。
本发明的有益技术效果:
本发明提供的一种规模性网站应用的高性能两级缓存装置,通过使用一级缓存降低缓存服务的服务压力,应用响应速度上高于完全使用缓存服务,本发明控制了一级缓存的使用量,有效的控制了本地缓存所占用应用缓存,保持了一级缓存与缓存服务数据的一致性。
附图说明
图1为本发明的规模性网站应用的高性能两级缓存装置操作缓存方法的流程图。
具体实施方式
为使本领域技术人员更加清楚和明确本发明的技术方案,下面对本发明作进一步详细的描述,但本发明的实施方式不限于此。
本实施例提供的一种规模性网站应用的高性能两级缓存装置,具体操作方法如下:
(1)、本装置实现redis的订阅接口从而实现监听;
(2)、应用调用本发明装置对外接口来操作缓存;
(3)、本装置对新增、删除、修改均会操作一级缓存,成功后操作缓存服务,并发布被操作的key,发布修改、删除、失效的key;
(4)、使用本装置的应用会监听来自缓存服务对key的操作消息,从而更新一级缓存;
(5)、一级缓存按照设定控制缓存使用量,当缓存个数、缓存容量任意一个到达上限时,使用最少使用原则来淘汰不常用的key来腾出空间。
在本实施例中,结合图1所示,通过使用一级缓存降低缓存服务的服务压力,应用响应速度上高于完全使用缓存服务,同时通过监听来自缓存服务对key的操作消息,从而更新一级缓存,本发明通过设定控制缓存使用量,有效的控制了本地缓存所占用应用缓存,保持了一级缓存与缓存服务数据的一致性。
以上所述,仅为本发明进一步的实施例,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明所公开的范围内,根据本发明的技术方案及其构思加以等同替换或改变,都属于本发明的保护范围。
1.一种规模性网站应用的高性能两级缓存装置,其特征在于,该缓存装置用于减少访问缓存服务redis的概率;用于保证redis服务数据与一级缓存数据的一致性;用于保证一级缓存占用存储大小可控。
2.如权利要求1所述的一种规模性网站应用的高性能两级缓存装置,其特征在于,减少访问缓存服务redis的概率的包括如下步骤:
步骤1:在缓存服务redis之前加一道应用级缓存,记为一级缓存,来存储从redis获取的数据,当应用获取数据时,先访问一级缓存,如果存在则直接返回给应用;
步骤2:如果一级缓存内不存在所需数据,则继续调用二级缓存服务redis,获取到数据后,存入到一级缓存并返回给应用。
3.如权利要求1所述的一种规模性网站应用的高性能两级缓存装置,其特征在于,保证redis服务的数据与一级缓存数据的一致性包括如下步骤:
步骤1:当应用程序使用本装置触发缓存修改、删除时,首先修改一级缓存,成功后再修改redis缓存,同时本装置使用redis的发布功能pub发布修改、删除的key;
步骤2:集群中的其他应用使用本装置redis的订阅功能sub监听发布修改、删除的key,接收key之后更新本地一级缓存;
步骤3:启用redis的key事件通知功能并开启key过期监听notify-keyspace-events"ex";
步骤4:本装置监听redis的key过期事件,当接收到过期的key,将本地一级缓存对应的值删除。
4.如权利要求1所述的一种规模性网站应用的高性能两级缓存装置,其特征在于,保证一级缓存占用存储大小可控,包括如下步骤:
步骤1:通过多种参数来控制一级缓存的大小,包括缓存个数限制、缓存空间限制和缓存淘汰策略;
步骤2:当缓存数量与占用内存空间中任意一项达到设定阀值后,根据lru策略来淘汰使用最少的缓存。