[問題] 先淘汰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