双写一致


本文主要说明双写一致性,保证数据一致性
Keyword: 延迟双删
注意:延迟双删不能保证数据的强一致性,延迟删除时可能也会导致脏数据出现

先上概念
双写一致性: 如果修改了数据库的数据,同时也要更新缓存中的数据,保证缓存和数据库的数据一致性。

一般请求时的查询数据过程

简单来说就是,查询数据时,如果缓存存在该数据则直接返回,否则会去数据库中查询,查询后再将该数据存入缓存中, 并且会设置过期时间。

读写操作

读操作

就是上图所述

写操作

延迟双删即修改数据库时,需要删除缓存->修改数据库->删除缓存

  1. 是先删缓存,再修改数据库,还是反过来? 为什么这两种方式都不能保证数据一致性?

    先删缓存,再修改数据库
    |450
    先修改数据库,再删缓存
    正常情况
    |450
    不一致情况
    |475

  2. 为什么需要延迟删除?

    数据库主从复制需要时间进行同步数据

强一致性(加锁)

这种会导致性能下降,只适用于读多写少的场景
|450

使用异步通信(MQ)

缺点:太过依赖于 MQ 的可靠性


文章作者: KTpro
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 KTpro !
评论
  目录