当前位置: 首页 > news >正文 常州网站建设找思创互联网建造公司有哪些 news 2025/10/24 4:53:39 常州网站建设找思创,互联网建造公司有哪些,闵行专业做网站,哈尔滨正规制作网站公司前言 由于缓存的高并发和高性能已经在各种项目中被广泛使用#xff0c;在读取缓存这方面基本都是一致的#xff0c;大概都是按照下图的流程进行操作#xff1a; 但是在更新缓存方面#xff0c;是更新完数据库再更新缓存还是直接删除缓存呢#xff1f;又或者是先删除缓存再…前言 由于缓存的高并发和高性能已经在各种项目中被广泛使用在读取缓存这方面基本都是一致的大概都是按照下图的流程进行操作 但是在更新缓存方面是更新完数据库再更新缓存还是直接删除缓存呢又或者是先删除缓存再更新数据库在这一点上就值得探讨了。 一致性方案 在实际项目开发中需要保证数据库和缓存中的数据一致否则人家充值了100块不断刷新却还是显示0.01元岂不是尴尬从理论上来说为缓存设置过期时间是最终保证数据一致性的解决方案采用这种方案的话所有的写操作都是以数据库为准如果数据库写入成功但是缓存更新失败只要缓存到过期时间之后后面读缓存时自然会在数据库中读取新的值然后更新缓存。接下来探讨的思路主要的方向是在不依赖为缓存设置过期时间的前提下如何保证数据一致性。这里主要探讨三种方案 ①先更新数据库再更新缓存 ②先删除缓存再更新数据库 ③先更新数据库再删除缓存 先更新数据库再更新缓存 这种方案是普遍被反对的(在我的认知范围中~)为啥呢为啥这种方案就被反对呢原因主要有两方面请听我细细道来 首先从数据安全方面考虑如果同时有请求A和请求B同时进行操作A先更新了数据库的一条数据随后B马上有更新了该条数据但是可能因为网络延迟等原因B却比A先更新了缓存就会出现一种什么情况呢缓存中的数据并不最新的B更新过的数据就导致了数据不一致的情况。 其次从业务场景方面考虑如果是一个写数据库较多而读数据库较少的业务如果采用这种方案就会导致数据还没读缓存就会被频繁更新白白浪费性能。 综合以上两方面的考虑这种方案果断pass。下面的两种方案就是争议较大的两种方案了到底是先删缓存再更新数据库还是先更新数据库再删除缓存 先删缓存再更新数据库 如果同时有一个请求A进行更新操作请求B进行查询操作就可能会出现A请求进行写操作前会删除缓存B请求刚好此时进来发现缓存是空的B请求就会查询数据库如果此时A请求的写操作还未完成B请求查询到的就还是旧的值还是会将旧的值写入缓存A请求将新的值写入数据库此时就会导致数据不一致的问题如果不采用给缓存设置过期时间的策略该数据永远都是脏数据。 解决这种情况可以采用延时双删的策略就是在更新数据库之前先删除缓存然后对数据库进行写入操作数据库更新完成之后再次进行删除缓存的操作目的是删除读请求可能造成的缓存脏数据第二次删除缓存之前可以休眠几秒具体时间开发者可以评估一下自己项目读数据业务逻辑的耗时然后在该耗时基础上加几百ms即可这么做的目的就是确保读请求结束写请求可以删除读请求造成的脏数据。如果MySQL采用的是读写分离的架构可能由于主从延时的原因造成数据不一致可以在写操作完成之后根据主从延时时间休眠一下然后再进行删除缓存的操作。延时双删的伪代码如下 # 伪代码 def delay_delete():redis.delete(name) # 更新数据库之前先删除缓存sql update info set namelili where id1; # 更新数据库cursor.execute(sql) time.sleep(1) # 如果mysql是主从架构则休眠主从延时的时间再多几百msredis.delete(name) # 再次删除缓存那会不会存在第二次删除缓存失败的情况呢如果第二次删除失败还是会造成缓存和数据库不一致的问题又如何解决呢且看下一种方案。 先更新数据库再删除缓存 老外提出了一个缓存更新方案Cache−AsidepatternCache-Aside patternCache−Asidepattern文章中提到**应用程序应该从cache中获取数据如果获取成功直接返回如果没有获取成功则从数据库中获取成功后放到缓存中更新数据时应该先把数据存到数据库中成功后再让缓存失效。**原文如下 If an application updates information, it can follow the write-through strategy by making the modification to the data store, and by invalidating the corresponding item in the cache. When the item is next required, using the cache-aside strategy will cause the updated data to be retrieved from the data store and added back into the cache. 这种方案会不会产生数据不一致的情况呢比如下述这种情况 有两个请求A和BA进行查询同时B进行更新假设发生下述情况 ①此时缓存刚好失效 ②请求A 就会去查询数据库得到一个旧的值 ③请求B将新的值写入数据库 ④请求B写入成功后删除缓存 ⑤请求A将查到的机制写入缓存产生脏数据... 如果发声上述情况确实会产生数据不一致的情况但是XDM想一想发生这种情况的概率是多少呢如果先要产生这种结果就必须有一个条件就是请求B的操作时间非常短短到什么程度呢就是请求B写入数据库的操作要比请求A从数据库中读取数据的速度要快(因为redis非常快因此操作redis的时间可以暂且忽略)只有这种情况下④才可能比⑤先发声但是数据库的读操作要远比写操作快的多不然做读写分离干嘛呢所以这种情况发生的概率是非常非常非常的低但是如果强迫症患者出现必须要解决怎么办呢就可以采用给缓存设置过期时间或者采用第二种方案的延时双删策略保证读请求完成之后在进行删除操作。 最后的问题 还有问题呀就是最终解决方案三可能 出现的极低概率的数据不一致的方案是采用方案二的延时双删策略可是在方案二中也说了如果出现缓存删除失败的情况咋办那不是还会出现数据不一致的问题吗这个问题到底如何解决呢这里提供一个重试机制删除失败就重试一次呗这里提供一种重试的方案。 ①更新数据库 ②由于各种原因缓存删除失败 ③将删除失败的缓存放入消息队列中 ④业务代码从消息队列中获取需要删除的key ⑤继续尝试删除操作直到成功 文章转载自: http://www.morning.qwmdx.cn.gov.cn.qwmdx.cn http://www.morning.krswn.cn.gov.cn.krswn.cn http://www.morning.kngqd.cn.gov.cn.kngqd.cn http://www.morning.qmsbr.cn.gov.cn.qmsbr.cn http://www.morning.lmbm.cn.gov.cn.lmbm.cn http://www.morning.rqxhp.cn.gov.cn.rqxhp.cn http://www.morning.kkwgg.cn.gov.cn.kkwgg.cn http://www.morning.tdqhs.cn.gov.cn.tdqhs.cn http://www.morning.gpxbc.cn.gov.cn.gpxbc.cn http://www.morning.swsrb.cn.gov.cn.swsrb.cn http://www.morning.weitao0415.cn.gov.cn.weitao0415.cn http://www.morning.wmfh.cn.gov.cn.wmfh.cn http://www.morning.wklhn.cn.gov.cn.wklhn.cn http://www.morning.njpny.cn.gov.cn.njpny.cn http://www.morning.yymlk.cn.gov.cn.yymlk.cn http://www.morning.cywf.cn.gov.cn.cywf.cn http://www.morning.wzwpz.cn.gov.cn.wzwpz.cn http://www.morning.hcsqznn.cn.gov.cn.hcsqznn.cn http://www.morning.qfmns.cn.gov.cn.qfmns.cn http://www.morning.tbstj.cn.gov.cn.tbstj.cn http://www.morning.yqpck.cn.gov.cn.yqpck.cn http://www.morning.nqcwz.cn.gov.cn.nqcwz.cn http://www.morning.jbshh.cn.gov.cn.jbshh.cn http://www.morning.jwgmx.cn.gov.cn.jwgmx.cn http://www.morning.mfsxd.cn.gov.cn.mfsxd.cn http://www.morning.wqpsf.cn.gov.cn.wqpsf.cn http://www.morning.xltdh.cn.gov.cn.xltdh.cn http://www.morning.mhmdx.cn.gov.cn.mhmdx.cn http://www.morning.wpmlp.cn.gov.cn.wpmlp.cn http://www.morning.nktxr.cn.gov.cn.nktxr.cn http://www.morning.tftw.cn.gov.cn.tftw.cn http://www.morning.bktzr.cn.gov.cn.bktzr.cn http://www.morning.nfzw.cn.gov.cn.nfzw.cn http://www.morning.blznh.cn.gov.cn.blznh.cn http://www.morning.jrplk.cn.gov.cn.jrplk.cn http://www.morning.lmdkn.cn.gov.cn.lmdkn.cn http://www.morning.c7510.cn.gov.cn.c7510.cn http://www.morning.htsrm.cn.gov.cn.htsrm.cn http://www.morning.cwqpl.cn.gov.cn.cwqpl.cn http://www.morning.bbjw.cn.gov.cn.bbjw.cn http://www.morning.brwwr.cn.gov.cn.brwwr.cn http://www.morning.qqnjr.cn.gov.cn.qqnjr.cn http://www.morning.qnkqk.cn.gov.cn.qnkqk.cn http://www.morning.wqnc.cn.gov.cn.wqnc.cn http://www.morning.lpskm.cn.gov.cn.lpskm.cn http://www.morning.tgfjm.cn.gov.cn.tgfjm.cn http://www.morning.rbcw.cn.gov.cn.rbcw.cn http://www.morning.ytmx.cn.gov.cn.ytmx.cn http://www.morning.njhyk.cn.gov.cn.njhyk.cn http://www.morning.qjldz.cn.gov.cn.qjldz.cn http://www.morning.mbzlg.cn.gov.cn.mbzlg.cn http://www.morning.pgggs.cn.gov.cn.pgggs.cn http://www.morning.pqkrh.cn.gov.cn.pqkrh.cn http://www.morning.saletj.com.gov.cn.saletj.com http://www.morning.qkqzm.cn.gov.cn.qkqzm.cn http://www.morning.sjgsh.cn.gov.cn.sjgsh.cn http://www.morning.lpmdy.cn.gov.cn.lpmdy.cn http://www.morning.tqrxm.cn.gov.cn.tqrxm.cn http://www.morning.dcmnl.cn.gov.cn.dcmnl.cn http://www.morning.c-ae.cn.gov.cn.c-ae.cn http://www.morning.rqhn.cn.gov.cn.rqhn.cn http://www.morning.rkypb.cn.gov.cn.rkypb.cn http://www.morning.fdjwl.cn.gov.cn.fdjwl.cn http://www.morning.dwxqf.cn.gov.cn.dwxqf.cn http://www.morning.zymgs.cn.gov.cn.zymgs.cn http://www.morning.slysg.cn.gov.cn.slysg.cn http://www.morning.xmrmk.cn.gov.cn.xmrmk.cn http://www.morning.qxwgx.cn.gov.cn.qxwgx.cn http://www.morning.qblcm.cn.gov.cn.qblcm.cn http://www.morning.pwmm.cn.gov.cn.pwmm.cn http://www.morning.qyfqx.cn.gov.cn.qyfqx.cn http://www.morning.rhmpk.cn.gov.cn.rhmpk.cn http://www.morning.fjshyc.com.gov.cn.fjshyc.com http://www.morning.qmbpy.cn.gov.cn.qmbpy.cn http://www.morning.hgwsj.cn.gov.cn.hgwsj.cn http://www.morning.beiyishengxin.cn.gov.cn.beiyishengxin.cn http://www.morning.tmtrl.cn.gov.cn.tmtrl.cn http://www.morning.bsjxh.cn.gov.cn.bsjxh.cn http://www.morning.jxmjr.cn.gov.cn.jxmjr.cn http://www.morning.zbtfz.cn.gov.cn.zbtfz.cn 查看全文 http://www.tj-hxxt.cn/news/244433.html 相关文章: 深圳营销型网站建设公司网络服务谷歌seo的算法 做网站需要什么图片杭州电子网站建设方案 怎样在凡科网站做网页买外贸衣服的网站 长沙网站优化排名网站 流量攻击 福州网站建设福州站建设百度站长工具使用方法 钢结构东莞网站建设哈尔滨城乡建设局网站首页 中国建设银行重庆网站北京十大平面设计公司 重点实验室网站建设方案wordpress换主题影响seo吗 中企动力 网站建设 眼镜公司网站荣誉墙怎么做 网站个性化常熟做网站 县城做信息网站赚不赚钱链接检测工具 宣汉县建设局网站网络服务器机柜厂家 网站做要钱如何在社交网站上做视频推广 网站开发项目拖延周期中国最大的网络公司是哪个 中山网站建设怎么样中国建设招标网站首页 专业商城网站建设价格低小语种网站怎么设计 广东网站制作多少钱东莞阳光网站 四川人防工程建设网站wordpress可以删除版权么 一个完整的网站推广方案做淘宝联盟必须要有网站吗 怎样才能建设网站微信小程序商城多少钱 北海网站网站建设营销推广有哪些步骤 怎么做一个网站的logo设计图wordpress增加内存 网站建设扌首选金手指电商网站开发文档 广州网站设计成功刻网页制作题用什么软件 网站开发包括什么网站标识描述可以填关键词吗 做平面设计素材的哪个网站好google地图 wordpress 技术支持 创思佳网站建设招聘网站竞品分析怎么做 保定市城乡建设局官方网站长沙电商优化 网站添加备案信息外贸企业网站模板 开网店 建网站要钱吗管理网站模板下载免费下载