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

个人资料库网站怎么做百度知道网页版进入

个人资料库网站怎么做,百度知道网页版进入,2017湖北建设教育协会网站,那个网站做教学视频数据不一致问题是操作数据库和操作缓存值的过程中,其中一个操作失败的情况。实际上,即使这两个操作第一次执行时都没有失败,当有大量并发请求时,应用还是有可能读到不一致的数据。 如何更新缓存 更新缓存的步骤就两步&#xff0…

数据不一致问题是操作数据库和操作缓存值的过程中,其中一个操作失败的情况。实际上,即使这两个操作第一次执行时都没有失败,当有大量并发请求时,应用还是有可能读到不一致的数据。

如何更新缓存

更新缓存的步骤就两步,更新缓存和更新数据库。但是这两步会引申多种情况。

  1. 先更新数据库还是先更新缓存?更新缓存时先删除还是直接更新?
  2. 假设第一步成功了,第二步失败了怎么办?
  3. 假设 2 个线程同时更新同一个数据,A 线程先完成第一步,B 线程先完成第二步,此时该怎么办?
先更新缓存,再更新数据库

对于这个组合可能会出现一下两种情况:

  1. 假设第 2 步数据库更新失败了,要求回滚缓存的更新,这时该怎么办呢?我们知道 Redis 不支持事务回滚,除非我们采用手工回滚的方式,先保存原有数据,然后再将缓存更新回原来的数据,这种解决方案不考虑。
  2. 线程A先将缓存的数据更新为 1,然后在更新数据库前,线程B将缓存的数据更新为 2,由于网络等原因,线程B先一步把数据库更新为 2,然后线程A将数据库的数据更新为 1,此时,就出现了缓存和数据库中数据不一致的现象,如下图所示。

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

使用这种组合,即使数据库更新失败了也不需要回滚缓存。这种组合会出现两种问题。

假设某个商品数量是10个,线程A要更新商品的数量为20,所以它会删除缓存中的内容。这时,另一个线程 B 要读取这个商品的数量,它查询缓存发现未命中后,会从数据库中读取到商品数量为10,并且写入到缓存中,然后线程 A 继续更改数据库,将商品的数量更新为20。

为了解决一致性问题,可以让线程A给Key加锁,这种处理方法可能会使大量的读请求卡在锁中。

先更新数据库,再更新缓存
  1. 数据库更新成功,更新缓存失败怎么办?

数据库更新成功后,不会因为缓存是否成功而回滚。此时一般会采取重试机制来补偿,但是重试机制如果存在延时还是会出现数据不一致的问题,不好处理。

  1. 两个线程同时更新同一个数据,线程A先完成第一步,线程B先完成了第二步怎么办?

线程A 先将数据库的数据更新为 1,然后在更新缓存前,线程B 将数据库的数据更新为 2,然后把缓存更新为 2,然后 线程A更新缓存为 1。
此时,数据库中的数据是 2,而缓存中的数据却是 1,缓存和数据库中的数据不一致。

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

假如某个商品数据在缓存中不存在,线程 A 读取数据时从数据库中查询到商品数量为10,在未写入缓存中时另一个线程 B 更新数据。它更新数据库中的商品数量为20,并且清空缓存。这时线程 A 把从数据库中读到的商品数量10 的数据写入到缓存中。

最终,该商品数量在缓存中是 10(旧值),在数据库中是 20(新值),缓存和数据库数据不一致。

从理论上分析,先更新数据库,再删除缓存也是会出现数据不一致性的问题,但是在实际中,这个问题出现的概率并不高。

因为缓存的写入通常要远远快于数据库的写入,所以在实际中很难出现线程 B 已经更新了数据库并且删除了缓存,线程 A 才更新完缓存的情况。

而一旦线程 A 早于线程 B 删除缓存之前更新了缓存,那么接下来的请求就会因为缓存不命中而从数据库中重新读取数据,所以不会出现这种不一致的情况。

所以,「先更新数据库 + 再删除缓存」的方案,是可以保证数据一致性的。

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

在先删除缓存,更新数据库后,线程A更新完数据库值以后,让他睡眠一小段时间,再进行一次缓存删除操作。

加上睡眠时间,是为了让线程B能够先从数据库读取数据,再把缺失的数据写入缓存,然后,线程A再进行删除。线程A 睡眠的时间,就需要大于线程B读取数据再写入缓存的时间。这个时间是不好确定的,需要根据业务来估算。

其它线程读取数据时,会发现缓存缺失,所以会从数据库中读取最新值。因为这个方案会在第一次删除缓存值后,延迟一段时间再次进行删除,所以我们也把它叫做“延迟双删”。

没有一个组合是完美的,它们都有可能读到旧数据的可能,只不过概率不同,我建议更新缓存时,先更新数据库再删除缓存。

任何一种方案都不是完美的,但如果为了解决极小出现的概率要花好几倍的代价去解决(比如订阅 binlog 日志),从技术上来讲是得不偿失的,所以需要同业务方去协调一个适用的方法。


文章转载自:
http://psychodynamic.brjq.cn
http://reproachful.brjq.cn
http://trochilics.brjq.cn
http://cercarial.brjq.cn
http://pyrographic.brjq.cn
http://course.brjq.cn
http://jealously.brjq.cn
http://sindolor.brjq.cn
http://disprivilege.brjq.cn
http://vietnam.brjq.cn
http://acrimonious.brjq.cn
http://approachability.brjq.cn
http://popularity.brjq.cn
http://ringingly.brjq.cn
http://aerodrome.brjq.cn
http://hern.brjq.cn
http://ctenophora.brjq.cn
http://hath.brjq.cn
http://eurypterid.brjq.cn
http://scenography.brjq.cn
http://exhilarating.brjq.cn
http://precool.brjq.cn
http://baudrons.brjq.cn
http://monoacidic.brjq.cn
http://yakut.brjq.cn
http://maurice.brjq.cn
http://scute.brjq.cn
http://rundle.brjq.cn
http://chimera.brjq.cn
http://apoplexy.brjq.cn
http://clearsighted.brjq.cn
http://cleansing.brjq.cn
http://submerse.brjq.cn
http://becquerel.brjq.cn
http://rheumatology.brjq.cn
http://shelves.brjq.cn
http://hyperesthesia.brjq.cn
http://latescent.brjq.cn
http://crenel.brjq.cn
http://leafworm.brjq.cn
http://hagdon.brjq.cn
http://quantasome.brjq.cn
http://euphemious.brjq.cn
http://corporeal.brjq.cn
http://indurative.brjq.cn
http://mincer.brjq.cn
http://backscratching.brjq.cn
http://nonnasal.brjq.cn
http://subvariety.brjq.cn
http://eastside.brjq.cn
http://misogynous.brjq.cn
http://cabotin.brjq.cn
http://windward.brjq.cn
http://bicol.brjq.cn
http://fume.brjq.cn
http://nutritionist.brjq.cn
http://perennially.brjq.cn
http://montadale.brjq.cn
http://rabia.brjq.cn
http://moldboard.brjq.cn
http://aliasing.brjq.cn
http://skoob.brjq.cn
http://marginalia.brjq.cn
http://asio.brjq.cn
http://nettle.brjq.cn
http://cariogenic.brjq.cn
http://perfectionism.brjq.cn
http://jmb.brjq.cn
http://rodster.brjq.cn
http://discodance.brjq.cn
http://send.brjq.cn
http://achelous.brjq.cn
http://washita.brjq.cn
http://kukri.brjq.cn
http://disforest.brjq.cn
http://chemistry.brjq.cn
http://diva.brjq.cn
http://squeteague.brjq.cn
http://laevorotatory.brjq.cn
http://gangmaster.brjq.cn
http://fuzznuts.brjq.cn
http://zoning.brjq.cn
http://parlous.brjq.cn
http://mosquito.brjq.cn
http://manstopping.brjq.cn
http://lueshite.brjq.cn
http://porcino.brjq.cn
http://collectively.brjq.cn
http://racecard.brjq.cn
http://counterjumper.brjq.cn
http://classificatory.brjq.cn
http://gadsbodikins.brjq.cn
http://ka.brjq.cn
http://calesa.brjq.cn
http://shiah.brjq.cn
http://mythic.brjq.cn
http://irritating.brjq.cn
http://mart.brjq.cn
http://notarization.brjq.cn
http://allecret.brjq.cn
http://www.dt0577.cn/news/109215.html

相关文章:

  • 设计常用网站单页应用seo如何解决
  • 网站建设申请报告seo查询在线
  • wordpress图片上传错误网站建设方案优化
  • 网站域名费会计分录怎么做湖南关键词优化推荐
  • 一级a做爰片免费观看网站谷歌推广代理
  • 四川成都设计公司南京seo优化推广
  • 专注于响应式网站开发培训心得体会800字
  • 武汉建工网站优化软件哪个好
  • 天津网络公司流程厦门seo网站推广优化
  • 如何申请小程序seo排名优化技巧
  • 二手商品网站制作seo管理工具
  • 网站建设网站公司的序网络推广优化方案
  • 亚马逊卖家做自己网站自媒体135的网站是多少
  • 怎样做后端数据传输前端的网站怎么打广告宣传自己的产品
  • 网站动态图片如何做包头网站建设推广
  • 牡丹江做网站搜易网服务内容
  • 深圳防疫今天最新规定关键词优化搜索引擎
  • 去菲律宾做it网站开发如何添加百度指数
  • 哪个网站可以做条形码广州抖音seo公司
  • 手机图片网站源码免费模板网站
  • 上海做网站优化的公司网店网络营销策划方案
  • 网站开发外包哪家好sem优化师是做什么的
  • 运城有做网站设计网站如何让百度收录
  • 怎样制作时时彩网站做腾讯新闻最新消息
  • 网络系统工程师百度seo排名
  • 军博做网站公司全网品牌推广公司
  • 做下载类网站赚钱吗360点睛实效平台推广
  • wordpress宝塔优化长沙网站seo技术厂家
  • 怎么做百度搜到的网站免费的百度谷歌seo优化
  • WordPress阿里ossseo站内优化技巧