博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
缓存更新(同步)
阅读量:6761 次
发布时间:2019-06-26

本文共 659 字,大约阅读时间需要 2 分钟。

缓存同步方案总结

这里总结的缓存同步方案适合像Redis这种集中式缓存,也适合像本地缓存这种分布式缓存。这里按照缓存的更新及时性分为三类

  • 及时性要求非常不高
  • 及时性要求比较高
  • 及时性要求极高

及时性要求非常不高

适合与分布的服务器,每隔一段时间更新内存数据或靠自定过期更新数据。

这种方式实现非常简单,适用于少量缓存数据,但在大批量的缓存数据的场景下不适用,需要考虑下面问题:

1. 缓存对象太多,需要定时过期或定期更新的对象太多2. 由于上面情况,可能出现加载缓存数据时对源数据的请求出现同时涌入的情况

一种解决办法就是把每个缓存对象的失效时间设成随机,达到缓存分散加载的目的。对于定时更新的方式也时类似解决办法,但此种解决办法还是受限于缓存对象的个数限制,只能达到暂时缓解这种问题的爆发。

及时性要求比较高

适合与分布式服务,一旦数据库的数据发生变化,通知每个分布的服务更新内存数据,通知方式基于MQ,数据发送改变需要同步到缓存时就发送一个Msg到MQ,每个分布的服务通过监控MQ来更新缓存。

对于这种方式,需要考虑缓存对象更新失败的情况,主要考虑点是Msg一定可以被处理并更新缓存成功

及时性要求极高

更新数据库的数据时,将更新分布服务的内存数据操作纳入同一个事物,等待所有事物完了,统一提交。适合与Redis这种集中式的缓存,基本的实现方式如下

mysql transaction beginsql update...redis update ......commit [exception rollback]

转载地址:http://wqbeo.baihongyu.com/

你可能感兴趣的文章
华为oj之字符串反转
查看>>
数据访问
查看>>
JSP里面的虚拟目录
查看>>
【329】word 替换文本高级用法
查看>>
自动化测试用例编写原则
查看>>
crontab定时任务以及其中中文乱码问题
查看>>
CSAPP buffer lab记录——IA32版本
查看>>
Hyperledger fabric多机的环境部署
查看>>
关于sqlserver2008 bcp根据数据表导出xml格式文件的小记
查看>>
总结:栈和队列的学习
查看>>
线段树(可能还会有树状数组吧)
查看>>
Android应用程序内部启动Activity过程(startActivity)的源代码分析
查看>>
《Python从小白到大牛》第9章 数据结构
查看>>
Xcode中四种build for 的区别
查看>>
酷客多小程序百城宣讲会-嵊州站完美落幕
查看>>
搞机年代,ivvi用“爱情”细分市场
查看>>
思科路由器开机进入 miniIOS 的原因分析
查看>>
卢松松:性格决定网站风格
查看>>
Management Console 工具管理类软件通用开发框架(开放源码)
查看>>
Gnome 3.2 发布计划及新功能
查看>>