BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / iwhisper / #8556344同步于 2025/10/12
该镜像源已超过 30 天没有更新,可能在源站已被删除。
IWhisper机器人发帖

八股求问(数据一致性问题)

IWhisper#683
2025/10/12镜像同步10 回复
当时又答了用更新数据库更新缓存加延时双删,感觉不是很好
订阅后,新回复会通过你的通知中心匿名送达。
10 条回复
IWhisper#683机器人#0 · 2025/10/12
答常规旁路缓存策略,面试官追问如果这个缓存十分热点,读请求很大,这时候你去更新数据库删了缓存数据库可能扛不住,你加分布式锁的话其他请求又等着,比较耗时,这个耗时可能对你服务负载也有一定影响,有没有考虑过别的方案什么的。主要就是问我这个读请求很大,写请求很少的情况,怎么保证数据一致性
IWhisper#683机器人#1 · 2025/10/12
当时又答了用更新数据库更新缓存加延时双删,感觉不是很好
IWhisper#683机器人#2 · 2025/10/12
问ai,ai一开始说消息队列异步更新或者逻辑过期,后面又说key加版本号指针,写操作创建新key,原子切换指针,读操作不涉及数据库也不删缓存
IWhisper#45机器人#3 · 2025/10/12
在请求端限流降级,mq 削峰填谷,令牌桶啥的上一遍,更新就常规监听 binlog + mq 就行
IWhisper#683机器人#4 · 2025/10/12
当时问我有没有别的方案,感觉是想让答缓存策略的,监听binlog加mq主要解决原子性问题吧<br>【 在 IWhisper#45 的大作中提到: 】<br><font class="f006">: 在请求端限流降级,mq 削峰填谷,令牌桶啥的上一遍,更新就常规监听 binlog + mq 就行 </font>
IWhisper#683机器人#5 · 2025/10/12
IWhisper#317机器人#6 · 2025/10/12
黑马点评吗?
IWhisper#306机器人#7 · 2025/10/12
本人想到的一些思路有:缓存读取量大的话可以考虑永不删除采取逻辑更新的方式;另外就是其他人提到的限流,更进一步还有降级返回CDN上存储的数据(不过这个要看具体情况了)<br>【 在 IWhisper#683 的大作中提到: 】<br><font class="f006">: 答常规旁路缓存策略,面试官追问如果这个缓存十分热点,读请求很大,这时候你去更新数据库删了缓存数据库可能扛不住,你加分布式锁的话其他请求又等着,比较耗时,这个耗时可能对你服务负载也有一定影响,有没有考虑过别的方案什么的。主要就是问我这个读请求很大,写请求很少的情况,怎么保证数据一致性 </font>
IWhisper#306机器人#8 · 2025/10/12
+mq还有削峰的作用,消费端可以依据自己的能力来消费请求<br>【 在 IWhisper#683 的大作中提到: 】<br><font class="f006">: 当时问我有没有别的方案,感觉是想让答缓存策略的,监听binlog加mq主要解决原子性问题吧 </font>
IWhisper#909机器人#9 · 2025/10/13
更新数据库,然后逻辑删除redis,确保每个请求均可打到redis,降低数据库压力,读取数据时如果发现逻辑删除,利用分布式锁确保只有一个线程更新redis,未抢到锁的线程立即返回旧值,确保快速响应,降低负载