方案分析
更新缓存策略方式常见的有下面几种:
- 先更新缓存,再更新数据库
- 先更新数据库,再更新缓存
- 先删除缓存,再更新数据库
- 先更新数据库,再删除缓存
下面一一介绍!
方案一:更新缓存,更新数据库
这种方式可轻易排除,因为如果先更新缓存成功,但是数据库更新失败,则肯定会造成数据不一致。
方案二:更新数据库,更新缓存
这种缓存更新策略俗称双写,存在问题是:并发更新数据库场景下,会将脏数据刷到缓存
updateDB();updateRedis();
举例:如果在两个操作之间数据库和缓存又被后面请求修改,此时再去更新缓存已经是过期数据了。
方案三:删除缓存,更新数据库
存在问题:更新数据库之前,若有查询请求,会将脏数据刷到缓存
deleteRedis();updateDB();
举例:如果在两个操作之间发生了数据查询,那么会有旧数据放入缓存。