Redis的缓存更新策略

 在操作Redis的缓存更新策略的时候,需要考虑三个问题:

  1. 是删除缓存还是更新缓存
  2. 如何保证缓存与数据库更新的操作同时成功呢?
  3. 是先操作缓存还是先操作数据库呢?

     对于第一个问题,有两种可能性:

  1.  更新缓存:每次更新数据库更新缓存,无效写操作较多
  2. 删除缓存:更新数据库时让缓存失效,查询的时候在更新缓存       

     第二个问题:可以将缓存与更新数据库操作放在一个事物中

     第三个问题:

  1.   是先删除缓存,在操作数据库
  2. 先操作数据库,在删除缓存

 

以上图片是先删除缓存,在操作数据库:情况是有两条线程同时执行,当第一条线程删除了缓存,但是在这个时候第二条线程进来了,由于没有查询到缓存,则会去数据中查询,但此时数据库还没有更新,所以查出来的是旧数据,并将旧数据写入到缓存中,等到结束后,第一条线程才开始更新数据库,这样就会导致数据库的值与缓存的值不一致; 

 以上是先操作数据库,后在进行删除缓存,当线程一的缓存失效,要查询数据库,查完后准备写入缓存,但是第二条线程进入,更新了数据库,在删除了缓存,这时候第一条才写入缓存,这样也会造成问题,但是这个操作明显比第一个操作来的更加难发生,一般情况下更新是比查询要慢许多的,所以推荐先操作数据库,后在进行删除缓存

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值