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

兄弟们有没有没封的网站网络公司开发软件

兄弟们有没有没封的网站,网络公司开发软件,有没有做那个的视频网站,如何提高网站吸引力所有的情况都是再并发情况下存在温蒂 一、先更新数据库#xff0c;再更新缓存场景-不推荐 当有两个线程A、B#xff0c;同时对一条数据进行操作#xff0c;一开始数据库和redis的数据都为1#xff0c;当线程A去修改数据库#xff0c;将1改为2#xff0c;然后线程A在修改…所有的情况都是再并发情况下存在温蒂 一、先更新数据库再更新缓存场景-不推荐 当有两个线程A、B同时对一条数据进行操作一开始数据库和redis的数据都为1当线程A去修改数据库将1改为2然后线程A在修改缓存中的数据可能因为网络原因出现延迟这个时候线程B将数据修改成了3、然后将数据库中的1也改成了3然后线程A恢复正常将redis中的缓存改成了2此时就出现了缓存数据和数据库数据不一致情况。 二、先更新缓存再更新数据库场景-不推荐 当有两个线程A、B同时对一条数据进行操作线程A先将redis中的数据修改为了2然后CPU切换到了线程B将redis中的数据修改为了3然后将数据库中的信息也修改了3然后线程A获得CPU执行将数据库中的信息改为了2此时出现缓存和数据库数据不一致情况。不推荐 三、先删除缓存再更新数据库的场景-不推荐 当有两个线程A、B同时对一条数据进行操作当线程A进行修改缓存操作时先删除掉缓存中的数据然后去修改数据库因为网络问题出现延迟这时线程B查新redis没有值因此去数据库中查询数据为1然后将数据1更新到缓存中线程A网络恢复又将数据库数据修改为了2此时出现数据不一致。不推荐当然可以给键设置过期时间自然过期后悔再查数据库 四、先更新数据库在删除缓存场景-可以接受 一改一查场景 当有两个线程A、B线程A先去将数据库的值修改为2然后需要去删除redis中的缓存当线程B去读取缓存时线程A已经完成delete操作时缓存不命中需要去查询数据库然后在更新缓存数据一致性 如果线程A没有完成delete操作图中案例线程B直接命中返回的数据与数据库中的数据不一致可能会短暂出现数据不一致情况但最终都会一致。 存在的问题 当数据过期或者初始化时会出现数据不一致情况 解决方案 对于不过期的数据我们要在上线的时候做好数据的预热保证缓存命中。对于存在过期的数据因为有过期时间只会在特定的时间段内数据不一致下次数据过期后可以恢复对于实时性要求不高时可以接受。 两次修改场景 当有两个线程A、B线程A去修改数据库中的值改为2然后出现网络波动线程B将数库中的值修改为了3然后两个线程都会删除缓存保证数据一致性。无非是线程A多删了一次。 但是问题来了按照以下时序操作可能会存在一个问题就是最后redis和数据库中的数据不一致 上面的单删策略情况如下 修改请求的实现中需要修改数据库后级联删除redis中的数据。 请求一1.1修改数据库数据 1.2 删除redis数据 请求二2.1修改数据库数据 2.2 删除redis数据 ​ 假设现在并发存在一个查询请求 请求三3.1查询redis中数据   3.2查询数据库数据   3.3 新查到的数据写入redis 一定要理解带redis的查询请求实现逻辑先查redis数据不存在查数据库查到的数据写入redis以便以后的查询不去直接查数据库此时并发情况下就会存在1.1 --- 1.2 --- 3.1 --- 3.2 --- 2.1 --- 2.2 --- 3.3的情况 ​ 此时存在的问题就是此时数据库中的数据保存的是2.1修改后的数据而redis中保存的数据是3.2中在1.1修改数据后的结果此时出现了redis中数据和数据库数据不一致的情况在后面的查询过程中就会长时间去先查redis从而出现查询到的数据并不是数据库中的真实数据的严重问题。 那怎么解决就需要用到经典的演示双删策略 上面的单删策略存在问题的情况如下 请求一1.1修改数据库数据 1.2 删除redis数据 请求二2.1修改数据库数据 2.2 删除redis数据 请求三3.1查询redis中数据   3.2查询数据库数据   3.3 新查到的数据写入redis 添加延时双删策略后的情况 请求一1.1修改数据库数据 1.2 删除redis数据   1.3 延时3--5s再去删除redis中数据 请求二2.1修改数据库数据 2.2 删除redis数据   2.3 延时3--5s再去删除redis中数据 请求三3.1查询redis中数据     3.2 查询数据库数据   3.3 新查到的数据写入redis 双删策略为什么能解决问题 因为存在了延时时间故1.3或2.3 一定是最后执行的一步操作并发中的延时一定要理解 延时的根本目的就是为了让程序先把3.3执行完再去删除redis 如何实现演示双删 比较好的   项目整合quartz等定时任务框架去实现延时3--5s再去执行最后一步任务mq的延迟队列 如果延时双删的第二步删除失败了怎么办则要进行重试 删除缓存重试机制 因为延时双删可能会存在第二步的删除缓存失败导致的数据不一致问题。 可以使用这个方案优化删除失败就多删除几次呀,保证删除缓存成功就可以了呀~ 所以可以引入删除缓存重试机制 删除缓存重试流程 写请求更新数据库 缓存因为某些原因删除失败 把删除失败的key放到消息队列 消费消息队列的消息获取要删除的key 重试删除缓存操作 读取binlog异步删除缓存 重试删除缓存机制还可以吧就是会造成好多业务代码入侵。其实 优化通过数据库的binlog来异步淘汰key。 以mysql为例吧 可以使用阿里的canal将binlog日志采集发送到MQ队列里面 然后通过ACK机制确认处理这条更新消息删除缓存保证数据缓存一致性
http://www.dnsts.com.cn/news/214996.html

相关文章:

  • 网站网址模板wordpress模板
  • 个体户做网站与公司好阜阳做网站的商户
  • 浏览器网站大全淄博网站制作营销
  • 网站和新媒体建设审批制度杭州企业建站模板
  • 域名 备案 网站网站空间购买官方
  • 制作网页需要的技术上海百度搜索优化
  • 泉州专门制作网站北京专业建网站的公司
  • 加强网站和新媒体建设管理的意义代刷网站app制作教程
  • 大型网站 网站建设做编程网站有哪些方面
  • 阿里云域名 设置网站300元建站
  • 高端网站建设万维科技个人电脑做服务器映射网站
  • 长春电商网站建设网站开发人员工具
  • 什么是网站建设策划书设计公司企业标志
  • 滕州网站制作哪家好手机怎样建设网站
  • 防下载 的视频网站 怎么做百度热门关键词排名
  • 黄江网站仿做国内新闻最新官方消息
  • 网站快速收录教程网站北京备案快吗
  • 包头网站开发wordpress博客优秀
  • 大型网站建设企业名录模板logo设计公司上海
  • seo批量建站方法抖音带运营是怎么回事
  • 北京西站wordpress logo.svg
  • 张家港哪家做企业网站上门做睫毛哪个网站
  • 古镇灯饰网站建设服务互联网公司排名 中国
  • 四川建设报名系统官网成都网站整站优化
  • 二级域名分发站免费阳江网络问政平台下载
  • 百度山西网站建设和百度推广被跨境电商骗了怎么投诉
  • 呼家楼做网站的公司深圳设计官网
  • 西双版纳建设厅网站做网站前期创建文件夹
  • 河北唐山网站建设网站建设程序制作
  • 什么网站做的比较好线上培训网站开发