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

延时双删-争议与我的思路-001

目录

  • 概括
    • 大概思路
    • 目的
    • 场景
    • 思路一
      • 退货
      • 时间差
    • 思路2
    • 思路3
  • 最后

概括

延时双删,是指在代码中删除两次缓存.
第一次自己访问,先删除.之后直接访问数据库获得数据

第二次是指 在第一步之后,在删除一次缓存的数据

大概思路

不进行延时双删的.寻找别的解决方法

目的

主要是为了解决数据库和缓存之间数据不一致的情况
如果在详细解释,就是另外的请求操作了对应的这条数据
比如
抢购的情况,别的用户抢到了需要对库存进行操作,在持久化,就是落库

场景

这里不详细写了.

思路一

数据分片,对数据进行分片.比如一条数据,的字段值是:10
可能是销售的场景,如果访问的频率在秒内比较大,就是每秒100个,那么用户请求
从缓存里面获取的不是最新的数据

数据分片,就是以关键字段,进行拆分

比如,上面的数据,count 是 10,
那么就拆分成10条数据.拆分到别的表里面,在放到缓存里面
比如 redis 的 list,如果用户1抢购商品,用户2也抢购商品,这时候请求就到了后端,
但是用户2网络比较好,请求先到服务,服务在发送请求到redis里面
用户1的请求后到,这时候redis执行命令

用户2 的命令redis先执行,执行pop命令,用户1在执行一遍pop命令

而redis是线程安全的. 服务实例获取的数据如果是空的话证明商品被抢完了.

退货

如果发生了退货,那么就对应的该一条数据状态即可.
在将这条数据放到redis里面

其他的用户在页面进行刷新,请求到了服务,而服务读取
redis,可以获取到这条数据

时间差

这里会发生时间差,导致用户刷新会获取不到最新数据
具体就不解决了.如果是抢手的,用户实际体验中
每次刷新的数据都会和后台不一致

思路2

思路2就是对数据加版本号

数据存入的数据加上版本号.服务实例1读取到的数据和redis不一致的情况下,就等待
而不是进行删除操作

就是不知道行不行 有心人可以推演一下逻辑看看到底行不行

思路3

思路3和思路二类似,但是版本号只有两个值,就是0和1

最后

文章写在失业的第X天.如果转载请说明来源

相关文章:

  • Neo4j数据库
  • 有哪些GIF图片转换的开源工具
  • 07 负载均衡
  • Linux的MySQL头文件和找不到头文件问题解决
  • windows多版本Python共存(大合集)
  • 方案精读:104页DeepSeek金融银行核算流程场景部署建设方案【附全文阅读】
  • LeetCode 155. 最小栈:Java 双栈解法详解
  • LWIP的Socket接口
  • SmartETL函数式组件的设计与应用
  • 【时时三省】(C语言基础)数组习题
  • 前端三剑客之HTML
  • LLM大语言模型系列1-token
  • 【AWS入门】Amazon SageMaker简介
  • [原创工具] 小说写作软件
  • spark-配置yarn模式
  • 吴恩达机器学习(1)——机器学习算法分类
  • SpringBoot项目里面发起http请求的几种方法
  • 【Spring】Spring中的适配器模式
  • 【PRB】深度解析GaN中最浅的受主缺陷
  • go语言协程调度器 GPM 模型
  • 国家统计局:4月社会消费品零售总额同比增长5.1%
  • 贯彻落实《生态环境保护督察工作条例》,充分发挥生态环境保护督察利剑作用
  • 中科院合肥物质院迎来新一届领导班子:刘建国继续担任院长
  • 罗马教皇利奥十四世正式任职
  • 中国旅马大熊猫“福娃”和“凤仪”启程回国
  • 15年全程免费,内蒙古准格尔旗实现幼儿园到高中0学费