notesArea/Redis/延迟双删.md

延迟双删

所谓的延迟双删,是指:

  1. 删除缓存
  2. 更新数据库
  3. 删除缓存

第一次删除缓存是因为如果数据库更新失败了,后续业务不会受到影响,因为缓存会被后续读请求更新。如果先更新数据库,再删除缓存,那么考虑到缓存删除失败,最终会导致数据不一致的问题。

从概率上来说,由于业务的复杂性,更新数据库失败的可能性更高,因此选择先删除缓存再更新数据库。

那么为什么还要第二次删除缓存呢?在情形 先删除缓存 中,读写并发会导致缓存中存在脏数据,因此通过第二次删除确保缓存最终和数据库中的数据保持一致。

大纲
文件