缓存一致性的问题

简介: 缓存一致性的问题


缓存一致性—双写模式

场景:第一个人卸了数据库,在数据同步到缓存的过程中由于网络等其他因素的延迟,第二个人写了数据库,很快就同步到了缓存,这时候缓存1进来修改了数据,这就导致了脏数据。

对于脏数据的问题:脏数据是暂时的,但是在数据稳定后,数据的自动过期时间过去后数据就又会正确。

因此,脏数据的发生主要是看对于脏数据的容忍度是多少。

缓存一致性—失效模式

场景:我们可以在修改了数据库以后将缓存中的数据删除掉,这样最新请求的数据会查询数据库然后将最新的数据放到缓存保证数据的一致性。

问题:写和读不一致的时候就会造成脏数据,例如:以下的场景,因为第一个人写了db删除了缓存,第二个人正在写db,第三个人开始读缓存发现没有数据就去读db,然后开始更新缓存,如果第二个人已经写完db删了缓存,那么第三个人拿到的数据放到缓存中其实是脏数据,如果第二个人在第三个人读完db更新缓存之后完成了删缓存的操作,那么第三个人拿到的还是脏数据。

缓存一致性—Canal

最后的解决方案

所以我们最好将经常写的数据或者可以容忍一段时间脏数据的数据放到缓存中。

相关文章
|
2月前
|
canal 缓存 NoSQL
Redis缓存与数据库如何保证一致性?同步删除+延时双删+异步监听+多重保障方案
根据对一致性的要求程度,提出多种解决方案:同步删除、同步删除+可靠消息、延时双删、异步监听+可靠消息、多重保障方案
Redis缓存与数据库如何保证一致性?同步删除+延时双删+异步监听+多重保障方案
|
3月前
|
消息中间件 缓存 监控
如何保证缓存和数据库的一致性?
保证缓存和数据库的一致性的做法
|
22天前
|
缓存 NoSQL 关系型数据库
mysql和缓存一致性问题
本文介绍了五种常见的MySQL与Redis数据同步方法:1. 双写一致性,2. 延迟双删策略,3. 订阅发布模式(使用消息队列),4. 基于事件的缓存更新,5. 缓存预热。每种方法的实现步骤、优缺点均有详细说明。
|
1月前
|
缓存 监控 算法
小米面试题:多级缓存一致性问题怎么解决
【10月更文挑战第23天】在现代分布式系统中,多级缓存架构因其能够显著提高系统性能和响应速度而被广泛应用。
41 3
|
1月前
|
消息中间件 缓存 中间件
缓存一致性问题,这么回答肯定没毛病!
缓存一致性问题,这么回答肯定没毛病!
|
2月前
|
消息中间件 缓存 NoSQL
奇怪的缓存一致性问题
本文记录了缓存一致性问题的排查过程和解决方案,同时带读者朋友们一起回顾下相关的八股文。
|
2月前
|
缓存 NoSQL 关系型数据库
MySQL与Redis缓存一致性的实现与挑战
在现代软件开发中,MySQL作为关系型数据库管理系统,广泛应用于数据存储;而Redis则以其高性能的内存数据结构存储特性,常被用作缓存层来提升数据访问速度。然而,当MySQL与Redis结合使用时,确保两者之间的数据一致性成为了一个重要且复杂的挑战。本文将从技术角度分享MySQL与Redis缓存一致性的实现方法及其面临的挑战。
152 2
|
3月前
|
消息中间件 缓存 监控
go-zero微服务实战系列(六、缓存一致性保证)
go-zero微服务实战系列(六、缓存一致性保证)
|
4月前
|
缓存 NoSQL 数据库
Redis问题之在高并发场景下,保证Redis缓存和数据库的一致性如何解决
Redis问题之在高并发场景下,保证Redis缓存和数据库的一致性如何解决
159 3
|
4月前
|
消息中间件 缓存 NoSQL
奇怪的缓存一致性问题
奇怪的缓存一致性问题
100 9