打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

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

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

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

Reids 作为远程分布式缓存

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

Redis和ehcache缓存的区别

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

缓存更新策略

1、广播更新策略

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

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

具体实现

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

    如果添加类型的更新则本地缓存新建key然后查询redis的key将value同步到本地缓存

    如果修改类型的更新则查询redis缓存然后将value同步到本地缓存。

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

2、定时更新

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

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

    缓存注意点

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

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

注意

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


架构流程图

单节点架构图


多节点架构图


本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
面试官:谈谈关于缓存穿透,缓存击穿,缓存雪崩,热点数据失效问题的解决方案
翻越缓存的三座大山:缓存一致性、缓存击穿、缓存雪崩
关于【缓存穿透、缓存击穿、缓存雪崩、热点数据失效】问题的解决方案
蚂蚁金服技术专家分享25个分布式缓存实践与线上案例
Nginx Redis Ehcache:大型高并发与高可用的三层缓存架构总结
面试官:你简历上写着有分布式开发经验,怎么对缓存雪崩不了解?
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服