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讀了舊數據,但僅只一次,無傷大雅