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

目前大部分高并发系统都是使用redis+mysql数据库来保证高性能,那么更新缓存和更新数据库的流程到底是怎么实现的呢?

目录

类别

分析

总结

拓展-延时双删

类别

实现缓存与数据库的双写一致性大致有四个类别,分别是:

①先更新缓存,再更新数据库

②先更新数据库,再更新缓存

③先删除缓存,再更新数据库

④先更新数据库,再删除缓存

分析

需要考虑两个问题:①更新缓存与删除缓存哪个更合适?②应该先操作数据库还是先操作缓存?

  • 更新缓存和删除缓存哪一个更合适?

        更新缓存的优点:每一次的数据变化都更新到缓存里面,所以查询命中率较高。

        更新缓存的缺点:更新缓存的消耗比较大。频繁的更新缓存,就会影响数据库性能,如果是写频繁的业务场景,那么可能是频繁的更新缓存但是不怎么读取缓存,那更新缓存并没有什么实际意义。

        删除缓存的优点:操作简单,直接将缓存的数据删除即可。

        删除缓存的缺点:删除缓存,下一次查询会出现未命中的情况,需要从数据库读入到缓存。

        综上,删除缓存会更优

  • 应该先操作数据库还是先操作缓存?

       首先对比一下先删除缓存

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值