美文网首页redis
redis双写一致性

redis双写一致性

作者: 念䋛 | 来源:发表于2021-07-02 22:35 被阅读0次

    Redis的双写一致性,笔者认为主要是关心多线程执行结束之后,redis中的缓存数据和数据库保持一致或者当前的redis是删除状态,等待下一查询数据的时候更新缓存,而不是关注多线程之间的线程安全问题。
    Redis双写一致性发生场景,是在高并发的项目中出现的,普通的项目发生的概率很低,甚至不用考虑不一致情况的发生。
    了解了什么是redis 的双写一致性,那么我们就分析如何最大可能的保证双写一致性。

    1. 先更新数据库再更新缓存


      image.png

      数据库store为6 redis为10

    2. 先删除缓存再更新数据库


      image.png

      数据库store为6 redis为10

    3. 先删除缓存在更新数据库(双删)


      image.png

      延时双删策略最终将redis删除掉,等下一次查询的时候会把最新的数据缓存到redis中,虽然解决了缓存不一致性,但是牺牲了性能,为了小概率事件,牺牲每一次访问效率,也不可取,当然也可以新开启一个线程去删除redis,
      但是毕竟多了一个线程.
      4.先更新数据库在删除缓存


      image.png
      数据库store为6 redis为10
      那再项目中该如何保证双写一致性呢,笔者建议使用4,把原有的图更改一下
      image.png

      因为查询数据库的时间小于更新数据库的时间,很有可能先更新redis,再删除redis,这样保证了一致性。
      如果对缓存一致性敏感的话,那只能使用锁机制,当然可以使用读写锁,保证效率。

    相关文章

      网友评论

        本文标题:redis双写一致性

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