如何保证缓存与数据库的双写一致性

本文探讨了在保证缓存与数据库双写一致性时的四种策略:先更新数据库后更新缓存、先更新缓存后更新数据库、先删除缓存后更新数据库以及先更新数据库后删除缓存。分析了每种策略的优缺点,指出先更新数据库后删除缓存是较为理想的方案,并提出了延时双删策略以应对并发场景下的数据一致性问题。
摘要由CSDN通过智能技术生成

如何保证缓存与数据库的双写一致性

只要使用到缓存,无论是本地内存做缓存还是使用 redis 做缓存,那么就会存在缓存与数据库同步的问题,接下来就讨论一下关于保证缓存和数据库双写时的数据一致性

我们这里列出来所有策略,并且讨论他们优劣性

  • 先更新数据库,后更新缓存(不建议采用)
  • 先更新缓存,后更新数据库(不建议采用)
  • 先删除缓存,后更新数据库(不太理想,可以采用
  • 先更新数据库,后删除缓存(建议采用

先更新数据库,后更新缓存(不建议采用)

这套解决方案,大家普遍反对的,一般是没有人使用的

原因一(会产生缓存与数据库数据不一致):在高并发的场景下,如果同时有请求 A 和请求 B 进行获取数据,那么会出现

  • 请求 A 更新了数据库
  • 请求 B 也更新了数据库
  • 请求 B 更新了缓存
  • 请求 A 更新了缓存

这就出现了请求 A 更新缓存应该比请求 B 更新缓存早才对,但是因为网络等原因,B 却比 A 更早更新了缓存。这就导致了脏数据,因此不考虑

原因二(业务场景角度)

  • 如果你是一个写数据库场景比较多,而读数据场景比较少的业务需求,采用这种方案就会导致,数据压根还没读到,缓存就被频繁的更新,浪费性能
  • 如果你写入数据库的值,并不是直接写入缓存的,
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值