redis缓存延时双删的原因分析
2023-06-13 09:19:48 时间
缓存为啥是删除,而不是更新?
我想要获取技术服务或软件
服务范围:MySQL、ORACLE、SQLSERVER、MongoDB、PostgreSQL 、程序问题
服务方式:远程服务、电话支持、现场服务,沟通指定方式服务
技术标签:数据恢复、安装配置、数据迁移、集群容灾、异常处理、其它问题
本站部分文章参考或来源于网络,如有侵权请联系站长。
数据库远程运维 redis缓存延时双删的原因分析
如果是更新,存在分布式事务问题,可能出现修改了缓存,数据库修改失败的情况。只是删除缓存的话,就算数据库修改失败,下次查询会直接取数据库的数据,也不会出现脏数据。
延时双删是什么?就是在增删改某实体类的时候,要对该实体类的缓存进行清空,清空的位置在数据库操作方法的前后。
采用反证法只先删

只后删
从而得出 前删和后删都有问题。所以采用延时双删的策略
思考2:为啥是延时依然是反证法。下图这情况是双删依然存在旧缓存的情况,延时是确保 修改数据库-》清空缓存前,其他事务的更改缓存操作已经执行完。
补充:为什么要延迟双删,来保证缓存一致性
为什么要延迟双删,来保证缓存一致性
在修改数据库数据前,需要先删除一次redis:此时是为了保证在数据库数据修改和redis数据被删除的间隔时间内,如有命中,保证此数据也不存在redis中。如果没有这一次删除,当数据库数据已经被修改了,但是还是可以从redis中读出旧数据,导致数据不一致。 第二次删除则是在修改数据库数据后,此时需要再次删除redis中对应数据一次,这一次是为了删除 第一次redis删除和数据库数据修改之间,如果有请求,那么旧数据又会重新缓存到redis中,然而数据在数据库中在接下来就会被修改,如果没有这一次删除,redis中则会存在数据库中旧的数据。 那么第二次为什么需要在数据库修改后延迟一定时间再删除redis呢? 为了等待之前的一次读取数据库,并等待其数据写入到缓存,最后删除这次脏数据,所以是一次数据从数据库中发到服务器+缓存写入的时间根据综合考虑,即使先修改数据库,在删除缓存,有一定的时间会导致读取到旧数据,这通常是可以被忍受的。
只要及时将缓存删除,其他线程就可以读取到最新的值。
如果在mq中消息没有被重复消费,还会交由给其他消费者消费(将缓存删除)
到此这篇关于redis缓存延时双删的原因分析的文章就介绍到这了,更多相关redis缓存延时双删内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!
我想要获取技术服务或软件
服务范围:MySQL、ORACLE、SQLSERVER、MongoDB、PostgreSQL 、程序问题
服务方式:远程服务、电话支持、现场服务,沟通指定方式服务
技术标签:数据恢复、安装配置、数据迁移、集群容灾、异常处理、其它问题
本站部分文章参考或来源于网络,如有侵权请联系站长。
数据库远程运维 redis缓存延时双删的原因分析
相关文章
- Raft算法在Redis中的实现(raftredis)
- 人人商城运用Redis技术,实现高效缓存管理(人人商城redis)
- “快速清理Redis缓存,优化性能!——Redis清除缓存命令的使用方法”(redis清除缓存命令)
- 使用Redis实现页面高性能缓存(redis做页面缓存)
- 手动配置Redis持久化保护数据安全(手动redis持久化)
- 如何实现对Redis集群的正确测试(怎么测试redis 集群)
- 如何查看Redis服务器端口信息(怎么查看redis端口)
- 如何优化Redis缓存的性能(怎么更新redis缓存)
- 解锁Redis库最佳缓存解决方案(缓存redis库)
- 清理Redis缓存,释放内存空间(清理缓存redis)
- 提升系统性能Redis缓存的清理工作(服务器redis缓存清理)
- 缓存淘淘商城展现缓存瓜分Redis好处(淘淘商城项目中redis)
- 时间复杂度分析与Redis性能提升之路(时间复杂度 redis)
- 极大提升网站效率,Redis数据库缓存技术的优势(数据库缓存技术redis)
- 实现高效Redis缓存批量更新(批量更新redis 缓存)
- 分布式系统中Redis缓存的魅力(分布式中的缓存redis)
- 设置Redis服务器 避免被挂起(如何防止redis挂掉)
- 查看Redis缓存一步步学习(怎么查redis缓存)
- 使用Redis管理余额,实现更高效支付(余额放redis)
- 重新开启使用Redis为老项目注入新能量(在老的项目添加redis)
- Redis实现高并发一份完整指南(redis高并发教程)
- Redis带来的静态缓存福音(redis静态缓存)
- 利用Redis队列与缓存提升系统性能(redis队列和缓存)
- 深陷Redis长连接迷局失败情景分析(redis长连接失败)
- 如何利用Redis避免读后写现象(redis避免读后写)
- 红色的痛Redis 超卖的影响分析(redis 超卖问题)
- 研究Redis中的读锁方法(redis读锁方法)
- 使用Redis集群可视化工具提高运维效率(redis集群可视化工具)
- 基于Redis的计数器实现代码讲解(redis计数器代码)
- 高效运行Redis性能优化配置实践(redis配置性能优化)
- 利用Redis缓存快速导入数据(redis缓存数据导入)