请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

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

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

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

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

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

正在回答 回答被采纳积分+3

3回答

慕圣8322165 2019-07-07 18:32:50

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

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

8 回复 有任何疑惑可以回复我~
慕九州5428536 2019-06-29 15:24:42

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

1 回复 有任何疑惑可以回复我~
龙虾三少 2019-05-27 23:04:00

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

1 回复 有任何疑惑可以回复我~
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信