当前位置: 首页 > wzjs >正文

深圳平台网站建设外包网站配置域名

深圳平台网站建设外包,网站配置域名,哪些网站可以做房产推广,杭州seo推广公司缓存一致性 1.两次更新 先更新数据库,再更新缓存;先更新缓存,再更新数据库; 出现不一致问题场景: 先更新数据库,再更新缓存; 先更新缓存,再更新数据库; 两次更新的适…

缓存一致性

1.两次更新

  • 先更新数据库,再更新缓存;
  • 先更新缓存,再更新数据库;

出现不一致问题场景:

先更新数据库,再更新缓存;

先更新缓存,再更新数据库;

两次更新的适用场景:

        如果我们的业务对缓存命中率(一定要用到缓存)有很高的要求,我们可以采用「更新数据库 + 更新缓存」的方案,因为更新缓存并不会出现缓存未命中的情况

 解决缓存不一致的办法

  • 在更新缓存前先加个分布式锁,保证同一时间只运行一个请求更新缓存,就会不会产生并发问题了,当然引入了锁后,对于写入的性能就会带来影响。
  • 在更新完缓存时,给缓存加上较短的过期时间,这样即时出现缓存不一致的情况,缓存的数据也会很快过期,对业务还是能接受的。

2.更新+删除策略

2.1 先删除缓存再更新数据库

出现问题的场景

请求A更新 请求B读取

解决办法

延迟双删:

        请求A先删除缓存然后再更新数据库,再给A加个睡眠时间,主要是为了确保其他请求完成读操作写入的缓存,然后请求 A 睡眠完,再删除缓存。

        所以,请求 A 的睡眠时间就需要大于请求 B 「从数据库读取数据 + 写入缓存」的时间。

但是具体睡眠多久其实是个玄学,很难评估出来,所以这个方案也只是尽可能保证一致性而已,极端情况下,依然也会出现缓存不一致的现象。

因此,还是比较建议用「先更新数据库,再删除缓存」的方案。

2.2 先更新数据库再删除缓存

请求A读取 请求B更新

上图是可能出现不一致的场景,但是在实际中,这个问题出现的概率并不高因为缓存的写入通常要远远快于数据库的写入。

出现问题的场景:

     「先更新数据库, 再删除缓存」其实是两个操作,在删除缓存(第二个操作)的时候可能会失败,导致缓存中的数据是旧值,而数据库是最新值

确保删除成功的办法
消息队列重试机制

        我们可以引入消息队列,将第二个操作(删除缓存)要操作的数据加入到消息队列,由消费者来操作数据。

  • 如果应用删除缓存失败,可以从消息队列中重新读取数据,然后再次删除缓存,这个就是重试机制。当然,如果重试超过的一定次数,还是没有成功,我们就需要向业务层发送报错信息了。
  • 如果删除缓存成功,就要把数据从消息队列中移除,避免重复操作,否则就继续重试。

缺点是,对代码入侵性比较强,因为需要改造原本业务的代码。

订阅 MySQL binlog,再操作缓存

        如果是MySQL、Redis缓存同步场景,为了保证成功率,可以用一个消费服务订阅MySQL binlog 日志,拿到具体要操作的数据,然后再向Redis执行缓存删除操作。

更具体的说法:

        可以通过订阅 binlog 日志,拿到具体要操作的数据,然后再执行缓存删除,阿里巴巴开源的 Canal 中间件就是基于这个实现的。

        Canal 模拟 MySQL 主从复制的交互协议,把自己伪装成一个 MySQL 的从节点,向 MySQL 主节点发送 dump 请求,MySQL 收到请求后,就会开始推送 Binlog 给 Canal,Canal 解析 Binlog 字节流之后,将binlog日志采集发送到MQ队列里面,然后编写一个简单的缓存删除消息者订阅binlog日志,根据更新log删除缓存,并且通过ACK机制确认处理这条更新log,保证数据缓存一致性。

八股总结


文章转载自:

http://twqLEVC1.kkjhj.cn
http://2Is7n1sJ.kkjhj.cn
http://N5C3qWoy.kkjhj.cn
http://6SfhMc12.kkjhj.cn
http://lUbRuxcg.kkjhj.cn
http://X5FQuI7u.kkjhj.cn
http://KvULw2dJ.kkjhj.cn
http://3iKQ5DPc.kkjhj.cn
http://Sz9TccZe.kkjhj.cn
http://XkPD6VnG.kkjhj.cn
http://EsAOscyb.kkjhj.cn
http://BzNWE1Z6.kkjhj.cn
http://t3rVobo4.kkjhj.cn
http://cFD0p0cM.kkjhj.cn
http://2PPtwCDj.kkjhj.cn
http://avIiQ833.kkjhj.cn
http://BGYRYtPZ.kkjhj.cn
http://mdY3FNh3.kkjhj.cn
http://CBO0uJKq.kkjhj.cn
http://O386bVdx.kkjhj.cn
http://TTUO7ZYd.kkjhj.cn
http://sCDFdO4r.kkjhj.cn
http://R6c9LYRy.kkjhj.cn
http://3ESZ3UGF.kkjhj.cn
http://dzFvSkoU.kkjhj.cn
http://UeWJzzo7.kkjhj.cn
http://PbPIAUeT.kkjhj.cn
http://4PLnvGVo.kkjhj.cn
http://iMtJ5kaA.kkjhj.cn
http://3WnciDlI.kkjhj.cn
http://www.dtcms.com/wzjs/672977.html

相关文章:

  • 宿州科技网站建设公司国际网站怎么做
  • 黄山建设网站公司电话号码机械设备上海网站建设
  • 公司建设网站的服务费广州番禺建网站
  • 南充网站建设与维护优秀网站案例欣赏
  • 电商网站模板下载东莞网站包年优化
  • 做外贸网站公司哪家消费全返的 微网站开发
  • 韶关网站seo高校工会网站建设
  • 建设京东物流网站的目标是什么荣成网站开发
  • ps免费模板网站网上花店网页制作素材
  • 郑州做网站企起wordpress合并压缩
  • 怎么做网站账号注册机网站建设的博客
  • 手机模板网站下载设计软件网站
  • 郑州网站定制门户网站的建设要求
  • 自己做网站iis设置免费做婚礼邀请函的网站
  • 建设网站地图素材网站模板代理电话
  • 摄影师作品网站有哪些wordpress微信编辑器
  • 快站app官网下载flv网站建设
  • 公司网站建设发展趋势潍坊网站排名优化
  • 徐州网站制作建设网页设计与网站建设程序作业
  • 邢台123交友信息手机版百度seo优化规则
  • 制作网站可用性监控wordpress加置顶功能
  • 东莞专业微网站建设wordpress网站怎么建设
  • 网站建设要经历哪些步骤?公司主页怎么制作
  • 网站建设凡客dede安装好后是模板怎么变成做好的网站
  • 网站用什么软件程序做WordPress首页做成插件
  • 简约个人网站欣赏设计网站页面步骤
  • 装修公司网站怎么做wordpress会员vip插件
  • iis 发布asp网站广州网站开发外包公司
  • 帮你做海报网站什么网站可以查房屋建筑面积
  • 自己建设一个网站网站用户告知书