如何解决缓存的脏读和失效的问题?

来源:5-21 【勤于思考,夯实学习成果】阶段思考题

BoxboxMan

2019-05-27

缓存的脏读问题:也就是数据的不一致性。

可以考虑对更新操作的时候先删除缓存,然后再更新数据库。

缓存失效:可能会带来的缓存雪崩。

可以考虑给每一个缓存的数据加上一个失效标记,若过期则启动另外一个线程进行缓存数据的更新。
写回答

3回答

慕圣8322165

2019-07-07

更新操作时删除缓存,涉及数据表少的时候可以那么做,但是如果一旦业务复杂起来,涉及数据表又多,那么代码中就会耦合大量缓存删除和更新操作,代码变得雍容,以后加新功能也要去操作缓存。所以脏读真的很难避免;

如果业务不复杂,涉及数据表还不算多,缓存更新方面可以使用redis的订阅机制,本地专门有个redis监听订阅的线程去异步更新缓存

8
0

慕九州5428536

2019-06-29

缓存脏读就是数据库更新之后,缓存内的数据没有更新,导致脏读。这个不就是缓存失效了吗?还是缓存失效还有其他情况吗?

1
0

龙虾三少

2019-05-27

赞 缓存脏读某种程度上都是不可避免的 因此除非尽可能的避免脏读还要考虑业务的容忍性问题

1
0

聚焦Java性能优化 打造亿级流量秒杀系统(赠秒杀项目)

理解高流量电商网站性能构建思路 用高逼格技术解决性能提升问题

2174 学习 · 1009 问题

查看课程