引言
- 本文介绍数据库中的旁路缓存策略;
旁路缓存策略
- 旁路缓存策略(cache aside pattern)是一种数据库结合缓存的设计模式;
- 基本架构:
- 数据库有主数据库(用于写)、从数据库(用于读),另有缓存用于提升读写效率;
策略概述
- 读请求:
- 先读缓存,如果不命中,再读从数据库;
- 如果缓存不命中,读从数据库后,写入缓存,方便下次命中;
- 写请求:
- 先写主数据库,再淘汰缓存;原因:数据总是以数据库为准,而不是以缓存为准,先写作为标准的一方;
- 淘汰缓存,而不是更新缓存;原因:如果更新而不淘汰缓存,则A\B两个进程并行写时,A写主数据库->B写主数据库->B更新缓存->A更新缓存,则业务期望的缓存为B写入的,但事实缓存中留存A写入的;
存在的问题
- 由于主数据库和从数据库不能及时同步,且读请求总是从从数据库中读并更新缓存,导致缓存始终和从数据库一致,即缓存旧数据的时候,主数据库已经是新数据了;
- 解决方案:当主数据库同步到从数据库时,清除缓存。