[问题] 先淘汰cache or 先写db ?

楼主: sean72 (.)   2018-07-10 16:39:10
https://zhuanlan.zhihu.com/p/38475787
这篇认为应该先invalidate cache 再写db
https://blog.csdn.net/flysqrlboy/article/details/79427618#t21
这篇认为应该先写db 再invaludate cache
请问哪个正确呢?
我觉得是case 2正确
case1:
user1 invalidate cache, while updating db(未完成)
user2 此时读资料,cache miss,去读数据库,得到旧数据,
并用旧数据update cache
user1 完成db更新
此时cache存著旧数据,db新数据,数据不一致
case2:
user1 update db (未完成)
user2 此时读资料,在cache读了旧资料,离开
user1 finish db and update cache
以后的user都可以读到最新数据,只有user2读了旧数据,但仅只一次,无伤大雅
作者: ssccg (23)   2018-07-10 16:55:00
我觉得问题不在data不一致,只要其中一边动作失败就有可能
作者: nottt (无)   2018-07-10 16:57:00
看操作类型 1.读多写少 > 先删暂存 2.读少写多> 先写DB
作者: RD (Refine & Design)   2018-07-13 16:04:00
开两个thread同时进行

Links booklink

Contact Us: admin [ a t ] ucptt.com