zoukankan      html  css  js  c++  java
  • 分布式系统中的缓存——笔记整理

    应女朋友之邀,重新开始写起博客

    此篇记录近期阅读的关于分布式缓存的一些好文章

    分布式之缓存击穿

    如果黑客每次故意查询一个在缓存内必然不存在的数据,导致每次请求都要去存储层去查询,这样缓存就失去了意义。如果在大流量下数据库可能挂掉。这就是缓存击穿

    文中主要详述了缓存击穿这个问题,提出了三套解决方案,

    1. 互斥锁 即,在根据key获得的value值为空时,先锁上,再从数据库加载,加载完毕,释放锁。若其他线程发现获取锁失败,则睡眠50ms后重试。。。(感觉这种做法对缓存击穿没啥改善啊,还容易造成死锁hang住整个线程,感觉应该+上缓存下null的状态可能更好)
    2. 异步构建缓存 (没看懂要干啥)
    3. 布隆过滤器 听名字挺屌,看起来是维护一个bit数组,然后通过一个特定的hash函数?hash集合的key,从而能够迅速判断一个元素是否在一个集合中。(不支持删值操作。。。)

    分布式之数据库和缓存双写一致性方案解析

    写的不错,主要论述了在更新缓存方面,是应该先更新缓存呢,还是先更新数据库呢?
    他讨论三种更新策略:

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

    没有完美方案,但是第三种方案综合情况考虑是最好的。即:

    失效:应用程序先从cache取数据,没有得到,则从数据库中取数据,成功后,放到缓存中。
    命中:应用程序从cache中取数据,取到后返回。
    更新:先把数据存到数据库中,成功后,再让缓存失效。

    面对缓存,有哪些问题需要思考?

    再谈缓存的穿透、数据一致性和最终一致性问题

    讲的不错,内容很多。涉及到了缓存问题的方方面面。然后主要是介绍了AutoLoadCache是怎么一一解决每个问题的。

  • 相关阅读:
    鼠标移上与移出事件
    最小高度 最大高度
    鼠标移上改变光标
    设置圆角
    iframe 子窗口获取父窗口元素 父窗口获取子窗口元素
    parent
    禁用滚动条
    mysql--user表
    mysql客户端连不上数据库
    linux下安装MySQL
  • 原文地址:https://www.cnblogs.com/acbingo/p/9229519.html
Copyright © 2011-2022 走看看