美文网首页
redis缓存相关-并发问题发现和解决

redis缓存相关-并发问题发现和解决

作者: Raral | 来源:发表于2021-10-28 22:57 被阅读0次

    redis 缓存相关

    基本缓存系统流程图

    redis缓存流程图.png

    分析缓存的过程

    1. 由于引入缓存,那么更新时,不仅要更新数据库,而且要更新缓存,这两个更新操作存在前后的问题:
    • 先更新数据库,再更新缓存;
    • 先更新缓存,再更新数据库;
      在高并发场景下,会出现数据库和缓存数据不一致问题
    1. 分析缓存和数据库不一致现象


      数据库和缓存不一致.png
    1. 先更新缓存,再更新数据库;也会出现数据不一致现象
      同理:
      请求A先更新缓存为1;同时,请求B更新缓存为2,然后更新数据库为2;
      最后请求A更数据库位1;
      这样当前缓存数据2,数据库数据为1;

    所以,无论是「先更新数据库,再更新缓存」,还是「先更新缓存,再更新数据库」,这两个方案都存在并发问题,当两个请求并发更新同一条数据的时候,可能会出现缓存和数据库中的数据不一致的现象。

    解决缓存和数据库数据不一致

    通过思考,在更新数据时,不更新缓存,而是删除缓存数据,然后读取数据时候,发现缓存没了命中数据之后,在从数据库读取数据,更新到缓存中
    分析图:

    读写策略.png
    1. 写策略步骤:
    • 更新数据库中的数据;
    • 删除缓存中的数据。
    1. 读策略的步骤:
    • 如果读取的数据命中了缓存,则直接返回数据;
    • 如果读取的数据没有命中缓存,则从数据库中读取数据,然后将数据写入到缓存,并且返回给用户。

    在想到「写策略」的时候,又陷入更深层次的思考,到底该选择哪种顺序呢

    先删除缓存,再更新数据库;
    先更新数据库,再删除缓存。
    用并发的角度来分析,看看这两种方案哪个可以保证数据库与缓存的数据一致性。
    敬请期待

    相关文章

      网友评论

          本文标题:redis缓存相关-并发问题发现和解决

          本文链接:https://www.haomeiwen.com/subject/fpubaltx.html