架构师之路 操作缓存还是先操作数据库

缓存能够提高读取速度,但操作不好也会带来一些弊端,在业务中使用缓存时操作顺序如何 ,如何确保业务读到正确的数据呢。在这篇文章中主要讲解一下先是操作数据库还是先操作缓存。

读不会改变数据,一般都是先读缓存在读数据库

对于写请求有两种情况。

第一种:先操作缓存,在操作数据库

 对于写请求(以数据库操作成功为准 来判断写是否成功),

(1) 先操作缓存(delete 或者set),

(2)操作数据库,在操作数据库阶段,

 若第一步成功,第二步失败。这里又分两种情况:

   若在(1)中使用set 则会导致缓存中数据 与数据库中不一致。

   若在(1)中使用delete则只会导致缓存没有该数据,数据并不会出现不一致,只是下次读取该数据时会重新在缓存中存取

若第一步失败,可以直接返回50X(服务器端错误),则没有后续操作,即数据也会一致

第二种 : 

(1)先操作数据库,

(2)接着操作缓存(set或者delete)

若第一步失败,则直接返回50X(服务器端错误), 没有后续操作,则数据一致。

若第一步成功,第二步失败,数据库中数据已经更新,第二步失败后不管操作缓存是用set还是delete操作,缓存操作失败,导致缓存数据与数据库中数据不一致,从而造成业务读取脏数据


综上所诉,在业务进行写操作时,因该先操作缓存(选用delete方法,虽然会造成缓存miss但不影响数据一致性)

 在操作数据库。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值