25 缓存异常(上):如何解决缓存和数据库中数据不一致的情问题?

一、缓和和数据库中的数据不一致是如何发生的?

(1)什么情况下是缓存和数据库数据一致的情况?

  • 缓存中有数据,那么,缓存的数据值需要和数据库中的值相同;
  • 缓存中本身没有数据,那么,数据库中的值必须是最新值。

(2)不同类型的 Redis 缓冲区读写数据的方式不一样

  • 读写缓冲区,对于读写缓冲区,可以支持读操作也可以支持写操作,当再 redis 缓存中执行写操作时,为了最终缓存中的数据与后端数据库的数据的一致性,有两种写回策略:同步直写策略和异步写回策略。
    • 同步直写策略:当缓存中执行写命令的时候,同时还要将写命令发送给后端数据库中,并且使用了事务机制,将缓存中的写于后端数据库中写放进同一个事务中,这样就可以保证缓存与后端数据库中的数据可以保证数据一致性。
    • 异步写回策略:应用程序发送给写命令给缓存,缓存使用 Redis GET 命令查询缓存中是否有该数据,如果有那么就在缓存中执行写命令,直至该数据被 Redis 缓存中淘汰时,才会将该数据写回到后端数据库中,但是由于期间可能会发生 Redis 数据库宕机等故障,存在丢失最新数据的可能性,因此其数据的可靠性并不高,并且并不能支持实时的缓存与后端数据库的数据一致性。适用于数据一致性要求并不高并且需要高性能的写操作的需求的场景。
  • 只读缓存
    • 当需要进行数据的写操作的时候,应用程序直接将写命令发送给后端数据库中,并且如果该数据在 redis 缓存中页也
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值