Ehcache+Redis 实现两级缓存介绍

为什么我们要做两级缓存?

ehcache 集群因为节点之间数据同步通过组播的方式,可能带来的问题:节点间大量的数据复制带来额外的开销,在节点多的情况下此问题越发严重,N 个节点会出现 N-1 次网络传输数据进行同步。

redis 主备由于作为中心节点提供缓存,其他节点都向 redis 中心节点取数据,所以,一次网络传输即可。(当然此处的一次网络代价跟组播的代价是不一样的)但是,随着访问量增大,大量的缓存数据访问使得应用服务器和缓存服务器之间的网络 I/O 消耗越大。

所以两级缓存的思想诞生了,在 redis 的方案上做一步优化,在缓存到远程 redis 的同时,缓存一份到本地进程 ehcache(此处的 ehcache 不用做集群,避免组播带来的开销),取缓存的时候会先取本地,没有会向 redis 请求,这样会减少应用服务器 <–> 缓存服务器 redis 之间的网络开销

第一步:修改 spring-cache.xml

image.png

第二步:修改 ehcache-spring-mestar.xml

image.png

第三步:实现 Cache 接口,将缓存内容写入 redis 中

image.png