Reids分布式缓存+Ehcache本地缓存解决方案

Redis 本地缓存+远程缓存方案

使用纯java的ehcache做为本地缓存java

Reids 做为远程分布式缓存redis

解决redis缓存压力过大,提升缓存速度,以及缓存性能。缓存

Redis和ehcache缓存的区别

若是是单个应用或者对缓存访问要求很高的应用,用ehcache。
若是是大型系统,存在缓存共享、分布式部署、缓存内容很大的,建议用redis。服务器

缓存更新策略

一、广播更新策略

使用redis的发布与订阅来实现缓存更新广播,本地缓存存放更新频率低,但请求量很高的数据,对于更新频率很高的数据应该由redis缓存来承担。架构

当某台服务器的本地缓存更新的时候,经过redis发布与订阅机制发布该key的更新信息,其余服务器监听到key的更新信息则更新本地缓存的key分布式

具体实现性能

经过注解方式标明该方法时候使用缓存,缓存的超时时间,是否开启本地缓存,若是开启本地缓存则当更新缓存时,先更新本地缓存和redis缓存,而后经过redis发布更新广播,其余服务器接收到该key的更新信息则更新本地缓存spa

    若是添加类型的更新则本地缓存新建key而后查询redis的key将value同步到本地缓存内存

    若是修改类型的更新则查询redis缓存而后将value同步到本地缓存。部署

    若是删除类型的更新则删除本地缓存的key和value。

二、定时更新

     考虑的本地缓存和服务器缓存要保证数据的一致性,防止因各类缘由致使因广播信息没有接收到或者其余缘由本地缓存没有更新特加入定时更新策略。

    定时更新是在广播更新的基础上在本地缓存加入超时时间,若是超过多长时间没有接收到更新广播,则清除本地缓存的key(设置超时时间),来保证缓存的最终一致性。

    缓存注意点

    本地缓存必须设置超时时间,必须定时更更新本地缓存,防止因各类缘由致使的本地缓存和redis缓存不一致,保证缓存的一致性。

redis缓存不该该设置永久缓存,防止因更新失败致使的缓存不一致,以及僵尸类型的key占用服务器内存(一些系统配置级别的能够设置永久缓存,如系统配置,基本上不会进行更新的或者更新频率很低的)

注意

项目启动时要清空本地与服务器同步的缓存区域,以保证缓存的一致性。

 

架构流程图

单节点架构图

多节点架构图

相关文章
相关标签/搜索