分布式学习 1.15 缓存

Cache Aside 更新模式

失效:应用程序先从 Cache 取数据,如果没有得到,则从数据库中取数据,成功后,放到缓存中。

命中:应用程序从 Cache 中取数据,取到后返回。

更新:先把数据存到数据库中,成功后,再让缓存失效。

Read/Write Through 更新模式

Read Through:在查询操作中更新缓存,也就是说,当缓存失效的时候(过期或 LRU 换出),Cache Aside 是由调用方负责把数据加载入缓存,而 Read Through 则用缓存服务自己来加载,从而对应用方是透明的。

Write Through:当有数据更新时,如果没有命中缓存,直接更新数据库,然后返回。如果命中了缓存,则更新缓存,然后由 Cache 自己更新数据库(这是一个同步操作)。

Write Behind Caching 更新模式

在更新数据的时候,只更新缓存,不更新数据库,而我们的缓存会异步地批量更新数据库。

好处: I/O 操作飞快无比(因为直接操作内存嘛)。

因为异步,Write Back 还可以合并对同一个数据的多次操作,所以性能的提高是相当可观的。

缺点:数据不是强一致性的,而且可能会丢失(我们知道 Unix/Linux 非正常关机会导致数据丢失,就是因为这个事)。

设计重点:

1. 外部缓存集群,内存足够大(数据分片),网络带宽好。

2. 命中率,80%以上就很高了

3. 数据更新延迟,牺牲强一致性

4. 缓存周期

5. LRU策略(淘汰时清除最不活跃的数据),维护顺序的数据结构排位

6. 防爬虫,爬虫保护机制

你可能感兴趣的:(分布式学习 1.15 缓存)