常见面试题及回答技巧,数据库与缓存一致性方案分享,我阿里P7了解到的Java面试的一些小内幕

本文探讨了业务中耦合更新和删除缓存的策略以保持数据库与缓存一致性,分析了并发场景下的问题。作者分享了个人在阿里作为P7的经验,提供了一份全面的Java开发学习资料,包括高分面试指南,覆盖多个技术领域,旨在帮助开发者提升技能和应对面试。
摘要由CSDN通过智能技术生成

==

保持缓存和数据库的一致性,最简单的做法就是直接在业务中去双写或删除保持一致性;如果要跟业务解耦,就要采用订阅binlog或者定时刷新的方式完成。

业务耦合的一致性方案


业务中耦合更新缓存

其中一种常见的方案是更新缓存,当数据变更时更新对应缓存数据到缓存中,该行为可以在同一个业务中也可用消息中间件解耦。当查询请求来时,就直接查询缓存返回数据,如下图:

输入图片说明

弊端:

  1. 当出现并发数据变更时,如A、B对同一行数据进行变更,A先变更完成,接着B变更完成,B更新缓存,A更新缓存。数据库中的数据是B的数据,但是缓存中却是A的数据。

  2. 与业务耦合不可取,增加业务复杂性以及依赖的中间件。

业务中耦合删除缓存

其实无论是前置更新还是后置更新缓存,在一些并发的极端场景都会出现缓存不一致的问题(思考一下前置更新),所以一个可以走的路子是删除缓存。当数据变更后,删除对应key的缓存,缓存的更新由C端业务来保证,如下图:

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值