redis的延迟双删策略总结
1、什么是延迟双删?
延迟双删策略是分布式系统中数据库存储和缓存数据保持一致性的常用策略,但它不是强一致。其实不管哪种方案,都避免不了Redis存在脏数据的问题,只能减轻这个问题,要想彻底解决,得要用到同步锁和对应的业务逻辑层面解决。
2、为什么要进行延迟双删?
一般我们在更新数据库数据时,需要同步redis中缓存的数据,所以存在两种方法:
第一种方案:先执行update操作,再执行缓存清除。
第二种方案:先执行缓存清除,再执行update操作。
这两种方案的弊端是当存在并发请求时,很容易出现以下问题:
第一种方案:当请求1执行update操作后,还未来得及进行缓存清除,此时请求2查询到并使用了redis中的旧数据。
第二种方案:当请求1执行清除缓存后,还未进行update操作,此时请求2进行查询到了旧数据并写入了redis。
3、如何实现延迟双删?
所以此时我们需要使用第三种方案:先进行缓存清除,再执行update,最后(延迟N秒)再执行缓存清除。
4、需要注意的点
上述中(延迟N秒)的时间要大于一次写操作的时间,一般为3-5秒。
原因:如果延迟时间小于写入redis的时间,会导致请求1清除了缓存,但是请求2缓存还未写入的尴尬。。。
ps:一般写入的时间会远小于5秒
5、小结
- 延迟双删用比较简洁的方式实现 mysql 和 redis 数据最终一致性,但它不是强一致。
- 延迟,是因为 mysql 和 redis 主从节点数据同步不是实时的,所以需要等待一段时间,去增强它们的数据一致性。
- 延迟是指当前请求逻辑处理延时,而不是当前线程或进程睡眠延迟。
- mysql 和 redis 数据一致性是一个复杂的课题,通常是多种策略同时使用,例如:延迟双删、redis 过期淘汰、通过路由策略串行处理同类型数据、分布式锁等等。
redis的延迟双删策略总结相关推荐
- MySql与Redis延迟双删策略
个人博客 欢迎访问个人博客: https://www.crystalblog.xyz/ 备用地址: https://wang-qz.gitee.io/crystal-blog/ 1. MySql与Re ...
- redis数据一致性之延时双删详解
在使用redis时,需要保持redis和数据库数据的一致性,最流行的解决方案之一就是延时双删策略,今天我们就来详细刨析一下 注意:要知道经常修改的数据表不适合使用redis,因为双删策略执行的结果是把 ...
- db与redis一致性解决策略:延时双删
文章目录 背景 读 写 1.先更新redis再更新db 2.先更新db再更新redis 3.先更新DB再删除redis 4.先删除redis再更新DB 5.延迟双删 6.思考变种 总结 适用场景 背景 ...
- redis 为什么说延时双删很扯淡
什么是延迟双删: https://blog.csdn.net/huizhi2533/article/details/107021249/ redis和mysql数据一致性的问题 在这里,我们讨论三种更 ...
- Redis延时双删实现mysql和redis的数据一致性
在高并发的业务场景下,为了保护数据库,我们一般都会做缓冲.所以,假设我们用redis做一个缓冲操作,让请求先访问redis,而不是直接访问mysql,来缓解数据库的压力. 平常的读取缓存没啥问题,但假 ...
- 面试官: Redis 与 MySQL 双写一致性如何保证?
前言 四月份的时候,有位好朋友去美团面试.他说,被问到Redis与MySQL双写一致性如何保证?这道题其实就是在问缓存和数据库在双写场景下,一致性是如何保证的?本文将跟大家一起来探讨如何回答这个问题. ...
- 美团二面:Redis与MySQL双写一致性如何保证?
前言 四月份的时候,有位好朋友去美团面试.他说,被问到Redis与MySQL双写一致性如何保证?这道题其实就是在问缓存和数据库在双写场景下,一致性是如何保证的?本文将跟大家一起来探讨如何回答这个问题. ...
- redis和mysql双写一致_缓存与库双写一致,这种“老大难”怎么给它制服?
日常生产场景中,为了避免大量请求同时打在数据库上导致故障,数据库+缓存的方式已经成了日常标配. 对于读取的部分,大家都很熟悉.但是对于写的部分,到底是先写库还是先写缓存,这点可能困扰着很多人. 旁路缓 ...
- Redis与Mysql双写一致性方案解析
本文目录 一 前言 二 一致性方案 三 先更新数据库,再更新缓存 四 先删缓存,再更新数据库 五 先更新数据库,再删缓存 回到目录 一 前言 首先,缓存由于其高并发和高性能的特性,已经在项目中被广泛使 ...
最新文章
- 网络营销再掀波澜,微博独领风骚
- Mysql学习总结(11)——MySql存储过程与函数
- javascript高精度计算解决方案
- Nicholas谈UE4高级渲染:动态光照迭代快
- 广告创意还是侮辱女性?全棉时代卸妆巾广告被骂上热搜......
- 感情沟通出了问题要怎么解决_感情专家咨询:感情出问题了怎么办?
- 使用Blocs For Mac发布网站的方法
- Java基础-零拷贝技术应用案例
- Unity设置天空盒子
- c++vs解决字符常量过多
- 【转】英语词汇学习渐进
- 数据库中主键、超键、候选键、外键是什么?
- 使用PQ分区魔术师与DiskGenius合并主分区与逻辑分区
- 新品周刊 | 雀巢脆脆鲨推出坚果巧克力威化;金宾波本威士忌推出父子合作酒品...
- CAD绘制粗略的示坡线
- 怎么给新加的固态硬盘装系统
- android中热更新模式,Android热更新与开启Instant Run
- Leetcode 45:跳跃游戏 II(最详细的解法!!!)
- vue双向绑定是如何实现的
- Hive-编写UDF函数(详细教程~~~)