您当前的位置: 首页 >  缓存

科技D人生

暂无认证

  • 0浏览

    0关注

    1550博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

Redis学习总结(7)——怎么保持缓存与数据库一致性?

科技D人生 发布时间:2018-08-07 15:58:43 ,浏览量:0

一、不一致原因分析

将不一致分为三种情况:1. 数据库有数据,缓存没有数据; 2. 数据库有数据,缓存也有数据,数据不相等; 3. 数据库没有数据,缓存有数据。 在讨论这三种情况之前,先说明一下我使用缓存的策略,也是大多数人使用的策略,叫做 Cache Aside Pattern。简而言之,就是1. 首先尝试从缓存读取,读到数据则直接返回;如果读不到,就读数据库,并将数据会写到缓存,并返回。 2. 需要更新数据时,先更新数据库,然后把缓存里对应的数据失效掉(删掉)。 读的逻辑大家都很容易理解,谈谈更新。如果不采取我提到的这种更新方法,你还能想到什么更新方法呢?大概会是:先删除缓存,然后再更新数据库。这么做引发的问题是,如果A,B两个线程同时要更新数据,并且A,B已经都做完了删除缓存这一步,接下来,A先更新了数据库,C线程读取数据,由于缓存没有,则查数据库,并把A更新的数据,写入了缓存,最后B更新数据库。那么缓存和数据库的值就不一致了。另外有人会问,如果采用你提到的方法,为什么最后是把缓存的数据删掉,而不是把更新的数据写到缓存里。这么做引发的问题是,如果A,B两个线程同时做数据更新,A先更新了数据库,B后更新数据库,则此时数据库里存的是B的数据。而更新缓存的时候,

关注
打赏
1662604032
查看更多评论
立即登录/注册

微信扫码登录

0.1896s