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

ASP.NET2.0网站开发全程解析自己的wordpress

ASP.NET2.0网站开发全程解析,自己的wordpress,网站的服务器每年都要续费的吗,公司建推广网站多少钱一,使用方案 在使用redis作为缓存的场景下,我们一般使用流程如下 二,更新数据场景 我们此时修改个某条数据,如何保证mysql数据库和redis缓存中的数据一致呢? 按照常规思路有四种办法,1.先更新mysql数据&a…
一,使用方案

在使用redis作为缓存的场景下,我们一般使用流程如下

在这里插入图片描述

二,更新数据场景

我们此时修改个某条数据,如何保证mysql数据库和redis缓存中的数据一致呢?
按照常规思路有四种办法,1.先更新mysql数据,再更新缓存数据 2.先更新缓存数据,再更新mysql数据
3.先删除缓存,再更新mysql数据 4.先更新mysql数据,再删除缓存 。
这四种方法各有各的弊端,并不能完全保证数据一致性,采用“先写 MySQL,再删除 Redis”的策略,这种情况虽然也会存在两者不一致,但是需要满足的条件有点苛刻,所以是满足实时性条件下,能尽量满足一致性的最优解。对于不是强一致性要求的业务,可以容忍。(什么情况下不能容忍呢,比如秒杀业务、库存服务等。)
为什么采用删除缓存而不是更新缓存,是因为高并发下产生脏数据的要求要比更新缓存的要求更多,也就是删除缓存产生脏数据的概率更小一些。
那么问题又来了,在高并发的情况下
采用先删除缓存,再更新数据库

  • 请求A来了,删除缓存
  • 请求A更新数据库,发生卡顿,同时来了请求B
  • 请求B发现没有缓存,就从数据库查询了数据,并生成了缓存
  • 此时请求A卡顿结束,更新了数据库
    这个情况下,缓存中的就是脏数据。我们采用延时双删来解决
    在这里插入图片描述
    那么问题又来了,第二次删除缓存失败了怎么办?看下面
  • 先更新数据库,再删除缓存
    如果删除缓存失败,怎么保证数据一致性?
    1.使用重试机制,可以直接在接口中重试,但是比较耗费性能
    2.使用异步队列重试
    3.使用rabbitmq消息中间件来处理
    当用户操作写完数据库,但删除缓存失败了,产生一条mq消息,发送给mq服务器。
    mq消费者读取mq消息,重试5次删除缓存。如果其中有任意一次成功了,则返回成功。如果重试了5次,还是失败,则写入死信队列中。
    当然在该方案中,删除缓存可以完全走异步。即用户的写操作,在写完数据库之后,不用立刻删除一次缓存。而直接发送mq消息,到mq服务器,然后有mq消费者全权负责删除缓存的任务。
    因为mq的实时性还是比较高的,因此改良后的方案也是一种不错的选择。

总结:以上方法只能保证最终一致性,不能保证强一致性

http://www.yayakq.cn/news/860728/

相关文章:

  • 西宁平台网站建设临沂 企业网站建设
  • 行政机关单位网站建设要求音乐建设网站
  • 做弩的网站浏览器下载安装大全免费下载
  • 淘宝网站开发框架河南省建设银行网站
  • 不错的免费网站建设网站源码制作
  • 企业级网站开发需求分析台州企业网站搭建特点
  • 手机网站制作解决方案网站建设需要度搜去
  • 洛阳网站建设优化找工作去哪个网站
  • HTML网站页面建设企业查查官网入口
  • 网站升级 云南省建设注册考试中心wordpress excel插件
  • 网站开发用户需求说明书在一个网站的各虚拟目录中默认文档的文件名要相同
  • 淄博哪家公司做网站最好搜狗网站提交
  • 网站建设与推广方案模板手绘元素素材
  • 物流网站和数据库建设无法分享到微信wordpress
  • h5游戏网站建设搜索引擎优化怎么推广
  • 山东建设银行官方网站免费好用的网站制作
  • 为什么网站用静态页面注册网站域名有什么用
  • 做金融网站需要什么营业执照网站模版源码
  • 青岛网站建设方案优化wordpress 微信连接
  • 子目录做网站wordpress情侣家园
  • 罗湖做网站公司wordpress权限插件
  • php网站开发技巧宝安区建设工程交易服务中心
  • 怎么学网站设计wordpress中文优化版
  • 网站建设方面存在的问题php网站开发进程状态
  • 怎么给网站做链接屏蔽平面设计教程网站
  • 公司网站荣誉墙怎么做鑫菲互动网站建设公司
  • 如何做vip影视网站沈阳网站设计
  • 网站开发设计中的收获域名网站账号
  • 乐清建网站哪家强网站永久空间
  • 合肥市科技中心网站集团网站建设调研报告