美文网首页
关于缓存的一些总结(6)

关于缓存的一些总结(6)

作者: Y先生的领地 | 来源:发表于2021-03-10 10:14 被阅读0次

    缓存中的数据如何和数据库保持一致性
    1、双写模式
    双写模式就是先写入数据库再写入缓存。
    但在高并发情况下容易出现脏数据,但数据最终还会保持一致性。


    image.png

    2、失效模式
    失效模式就是当我更新数据库数据时直接删除对应的缓存,当客户读取数据时再写入缓存一份即可。这种方式相对简单,而且使用比较频繁。


    image.png

    3、数据一致性问题总结:


    image.png

    其实在开发过程中:只要在加缓存时添加过期时间,基本都能满足大部分的需求,如果想避免脏数据,可以使用读写锁,但一般没必要。
    我们还可以使用阿里的一个中间件Canal来解决数据库和缓存的数据一致性问题:

    使用Canal保障数据一致性问题:


    image.png

    canal是阿里的一个中间件,相当于是mysql 的一个从数据库,当主数据库发生数据变化时变会触发canal。很像之前我们使用的mycat进行数据库的读写分离。
    我们可以使用canal监听数据库的变换,当数据发生改变时进行redis的读写或者删除。这样可以让业务更加简单,我们只需要关注数据库即可。
    canal还可以使用到推荐系统中:比如淘宝、京东首页会根据用户的不同首页显示不同的内容,我们可以使用canal监听访问记录表或者商品信息表的变化,通过calnal进行监听,并进行实时分析,将分析结果放入到推荐表中,然后实时展现给客户。
    但只要不是特别大型的系统,不需要进行如此复杂的架构!!!!!

    相关文章

      网友评论

          本文标题:关于缓存的一些总结(6)

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