为什么是删除缓存而不是更新缓存,如果是更新缓存的话,那更新数据100次,那岂不是缓存也要更新100次,但有可能这个缓存1个小时才被访问一次,那这100次缓存中前99次就白更新了,而删除的话就只用去更新缓存一次,就有点类似懒加载的那个意思。 所以的话,首先第一有删除缓存再更新数据库的这种做法,但是就可能会出现你删除缓存后和在数据更新成功之间如果再来了一个查询,那就会把旧的数据设置缓存,所以这个一般要加上延时双删的策略,设置一定时间内再去删除一下缓存。 还有就是先更新数据库,再删除缓存。但是这种的话存在问题就是如果你数据库更新成功了,但是删除缓存失败了,那就一直读取的是旧数据,所以一般也要去保证能删除成功,有两种方法,第一种就是消息队列嘛,你把要删除的缓存放进队列中,如果删除失败就重试。第二种方法是去订阅数据库的binlog日志。
