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读了旧数据,但仅只一次,无伤大雅