一、提前阅读
二、先更新缓存,再更新数据库
1、考虑并发操作:线程A写,线程B读
1、线程A发起一个写操作,第一步delete cache
2、此时线程B发起一个读操作,cache miss
3、线程B继续读数据库,读出来一个老数据
4、然后老数据入cache
5、线程A写入了最新的数据
这样以后每次从缓存中读到的都是老数据,造成数据不一致。
既然这种情况下先删除缓存会有数据不一致的情况,那我们来试试第一步不删除缓存而是直接更新缓存试试看。
2、考虑并发操作:线程A写,线程B写
1、线程A发起一个写操作,第一步set cache
2、线程B发起一个写操作,第一步set cache
3、线程B写入数据到数据库
4、线程A写入数据到数据库
这样以后每次从缓存中读到的都是线程B设置的数据,但数据库中存储的是线程A写入的数据,导致数据不一致。
3、小结
可看到先操作缓存不论是先删除缓存还是先更