Skip to content

单边缓存模式

Cache-Aside Pattern

按需将数据从数据存储加载到缓存中。提升性能,维护数据一致性。

1. 背景与问题

应用使用缓存优化存储在数据仓库且重复获取的数据。但是,通常不可能保证数据总是同步的。应用应该实现一种策略帮助确保缓存尽可能地更新,但也能检测和处理数据过期的情况。

2. 解决方案

许多商业缓存系统提了 透读(read-through)和 透写/回写(write-through/write-behind )操作。若数据不在缓存,它从数据存储中透明地检索并添加到缓存中。任何缓存中的数据修改会被自动写回到数据仓库。

对于不提供这项功能的缓存来说,使用缓存维护缓存数据就是应用的责任了。

应用可以通过实现单边缓存策略模仿 透读 功能。这个策略可以有效的及时将所需数据载入缓存。下图是读取时的步骤总结:

若应用更新了信息,可以这样模拟 透写 功能:

  1. 修改数据仓库的信息
  2. 无效化缓存中的信息

3. 适用场景

适用:

  • 没有提供 透读和透写 操作的缓存系统。
  • 资源需求不可预测。

不适用:

  • 静态的缓存数据集。如果数据能够放入可用的缓存空间,请在启动时用数据填充缓存,并应用防止数据过期的策略。
  • 用于在 Web 应用程序中缓存会话状态信息。在此场景下应该避免引入基于 客户端-服务端 关联的依赖关系。

4. 相关模式与手册