结合双删策略+缓存超时设置,这样最差的情况就是在超时时间内数据存在不一致 。
2、重试方案重试方案有两种实现,一种在业务层做,另外一种实现中间件负责处理 。
然而,该方案有一个缺点,对业务线代码造成大量的侵入 。
流程如下:
1.更新数据库数据;
2.缓存因为种种问题删除失败;
3.将消费消息,获得需要删除的key;
4.自己消费消息,获得需要删除的key;
5.重试删除操作,直到成功 。
而这个放在业务层去处理的话,侵入太高,所以一般是不太推荐使用来解决这个问题 。
但是呢,还有一个就是使用中间件来进行处理 。
启动一个订阅程序去订阅数据库的binlog,获得需要操作的数据 。在应用程序中,另起一段程序,获得这个订阅程序传来的信息,进行删除缓存操作 。
流程如下:
1.更新数据库数据;
2.数据库会将操作信息写入binlog日志当中;
3.订阅程序提取出所需要的数据以及key;
4.另起一段非业务代码,获得该信息;
5.尝试删除缓存操作,发现删除失败;
6.将这些信息发送至消息队列;
7.重新从消息队列中获得该数据,重试操作 。
关于延迟双删除策略,你学会了么?
推荐阅读
- MySQL索引,快速记忆法
- Redis有哪些持久化方式?一文带你了解技术存储的魅力!
- 浅析 Redis 中 String 数据类型及其底层编码
- 带你读 MySQL 源码:Where 条件怎么过滤记录?
- |战国 和田玉白玉籽料 龙凤纹 楚式 玉珮
- 宋修|宋修内司玉勒 和田玉白玉籽料 双勾诗文 勒子
- 什么是王者荣耀中的羊群效应?零和博弈到底是什么?
- 跑步教练如何进行饮食和营养摄取?
- 艺术品|?为什么要买非常贵的和田玉艺术品?
- 岫岩玉|和田玉“平替”!盘点那些最像和田玉的天然玉石!
