双写一致中的cache aside pattern 边路缓存思想与实际开发对比

本文探讨了在数据库写操作中如何同步缓存,确保数据一致性。首先,保存操作会同步更新缓存,而删除则会淘汰缓存,避免脏数据。在查询时,先查缓存,无数据时再从数据库获取并缓存。为防止极端情况下可能出现的脏数据,可以使用分布式锁或事务。然而,分布式事务虽然确保数据一致性但较慢,分布式锁则较快但可能导致串行化。实际应用中需根据具体场景权衡选择。
摘要由CSDN通过智能技术生成

定义
当访问数据库执行写操作的时候,有缓存介入到整体执行流程中时,先写数据库保证成功的前提下,淘汰(删除)缓存中对应的数据。
查询数据的时候,有缓存介入到整体执行流程中时,先查询缓存,如果有数据直接返回;如果没有数据,查询数据库,并将数据库查询结果保存到缓存中,再返回。

正式开发项目中
一般写操作分为保存(新增和修改)和删除。保存的时候,是同步缓存数据;删除的时候,是淘汰缓存数据。目的是,提升缓存的应用效率。

边路缓存思想中的淘汰目的
1、保证缓存的数据绝对正确;2、没有查询,就没有缓存的必要。

边路缓存中,先写数据库,后淘汰缓存的目的:保证缓存中不会有脏数据。如:多线程的情况下,线程1删除某数据,先淘汰缓存中的数据,CPU到期,终止运行,等待下一个CPU时间片;线程2查询线程1要删除的数据,缓存中没有数据,访问数据库,查询到结果,并缓存;线程1获取CPU时间片,访问数据库,删除数据,执行结束。缓存中有脏数据。

当然先淘汰缓存,然后写数据库也会发生脏数据。因为数据库的访问时间一定比缓存访问时间长,可能出现脏数据的情况概率要低很多。

真实开发中,一定是先访问数据库,后访问缓存 ,如果考虑极限情况可能出现脏数据,则在访问缓存的时候,增加分布式锁或者分布式事务。

分布式事务相对来说是比较慢的,但是可以并行处理,
分布式锁是相对来说是比较快的,但是有可能出现串行化
到底用什么,要具体情况具体分析

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值