六大缓存(Caching)策略揭秘:延迟与复杂性的完美平衡
引言 在为应用程序添加缓存时,首先需要考虑缓存策略。缓存策略决定了从缓存和底层存储(如数据库或服务)进行读写操作的方式。 从高层次来看,你需要决定在发生缓存未命中(cache miss)时,缓存是被动还是主动的。也就是说,当应用程序从缓存中查找一个值但该值不存在或已过期时,缓存策略会决定是由应用程序还是缓存本身从底层存储中获取数据。不同的缓存策略在延迟和复杂性之间存在不同的权衡,下面我们将逐一探讨。 1. 缓存旁路(Cache-Aside Caching) 缓存旁路是最常见的缓存策略之一。当缓存命中(cache hit)时,数据访问延迟主要由通信延迟决定,通常较小,因为缓存可以部署在靠近应用程序的缓存服务器上,甚至直接在应用程序的内存中。 但在缓存未命中时,缓存是被动存储,由应用程序负责更新缓存。即缓存仅报告未命中,应用程序需要从底层存储中获取数据并更新缓存。 工作流程 如图 1 所示,应用程序通过缓存键(cache key)从缓存中查找值。缓存键决定了应用程序需要的数据。 如果键存在于缓存中,缓存返回与该键关联的值,应用程序直接使用。 如果键不存在或已过期(缓存未命中),应用程序需要...