
缓存
striveb
趁年轻,多吃点苦吧
展开
-
深入理解缓存之缓存和数据库的一致性
GitHub:https://github.com/JDawnF产生原因主要有两种情况,会导致缓存和 DB 的一致性问题: 并发的场景下,导致读取老的 DB 数据,更新到缓存中。 缓存和 DB 的操作,不在一个事务中,可能只有一个操作成功,而另一个操作失败,导致不一致。 当然,有一点我们要注意,缓存和 DB 的一致性,我们指的更多的是最终一致性。我们使用缓存只要是提高读...原创 2019-07-08 23:02:09 · 33919 阅读 · 18 评论 -
深入理解缓存之缓存预热与淘汰策略
GitHub:https://github.com/JDawnF一、缓存预热在刚启动的缓存系统中,如果缓存中没有任何数据,如果依靠用户请求的方式重建缓存数据,那么对数据库的压力非常大,而且系统的性能开销也是巨大的。此时,最好的策略是启动时就把热点数据加载好。这样,用户请求时,直接读取的就是缓存的数据,而无需去读取 DB 重建缓存数据。举个例子,热门的或者推荐的商品,需要提前预热到缓...原创 2019-07-10 21:43:23 · 3844 阅读 · 0 评论 -
深入理解缓存之常见的缓存算法
GitHub:https://github.com/JDawnF缓存算法,比较常见的是三种: LRU(least recently used ,最近最少使用) LFU(Least Frequently used ,最不经常使用) FIFO(first in first out ,先进先出) 手写 LRU 代码的实现手写 LRU 代码的实现,有多种方式。其中,最...原创 2019-07-06 09:24:19 · 1439 阅读 · 0 评论 -
深入理解缓存之缓存存在的问题及应对措施
GitHub:https://github.com/JDawnF1.缓存穿透指查询一个一定不存在的数据,由于缓存是不命中时被动写( 被动写,指的是从 DB 查询到数据,则更新到缓存中 )的,并且处于容错考虑,如果从 DB 查不到数据则不写入缓存,这将导致这个不存在的数据每次请求都要到 DB 去查询,失去了缓存的意义。缓存穿透问题可能会使后端存储负载加大,由于很多后端存储不具备高并...原创 2019-07-07 10:25:45 · 3014 阅读 · 0 评论