缓存

作者: byamao1 | 来源:发表于2018-10-13 08:42 被阅读0次

    Spring cache采用的是什么缓存模式?

    Cache Aside 模式

    https://www.ctolib.com/topics-114308.html

    缓存模式

    Cache Aside 更新模式
    Read/Write Through 更新模式 先更新缓存,缓存负责同步更新数据库
    Write Behind Caching 更新模式 先更新缓存,缓存定时异步更新数据库

    http://www.cnblogs.com/llzhang123/p/9037346.html 避坑指南

    更新策略

    有三种讨论:
    先更新数据库,再更新缓存 ×
    先删除缓存,再更新数据库
    先更新数据库,再删除缓存

    错误:
    先更新数据库,再更新缓存 原因:2次并发write操作,先更新数据库的反而后更新缓存
    正确:
    先更新数据库,再删除缓存 这是Cache Aside的方式

    先删缓存,再更新数据库 也可能造成不一致情况
    solution:
    采用延时双删策略
    (1)先淘汰缓存
    (2)再写数据库(这两步和原来一样)
    (3)休眠1秒,再次淘汰缓存
    采用这种同步淘汰策略,吞吐量降低怎么办?
    ok,那就将第二次删除作为异步的。自己起一个线程,异步删除。这样,写的请求就不用沉睡一段时间后了,再返回。这么做,加大吞吐量。
    第二次删除,如果删除失败怎么办?
    提供一个保障的重试机制即可。(binlog + 队列)

    更新策略 http://www.cnblogs.com/baishuchao/p/9206521.html

    相关文章

      网友评论

          本文标题:缓存

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