Architecture(七)旁路缓存策略

引言

  • 本文介绍数据库中的旁路缓存策略;

旁路缓存策略

  • 旁路缓存策略(cache aside pattern)是一种数据库结合缓存的设计模式;
  • 基本架构:
    • 数据库有主数据库(用于写)、从数据库(用于读),另有缓存用于提升读写效率;

策略概述

  • 读请求:
    • 先读缓存,如果不命中,再读从数据库;
    • 如果缓存不命中,读从数据库后,写入缓存,方便下次命中;
  • 写请求:
    • 先写主数据库,再淘汰缓存;原因:数据总是以数据库为准,而不是以缓存为准,先写作为标准的一方;
    • 淘汰缓存,而不是更新缓存;原因:如果更新而不淘汰缓存,则A\B两个进程并行写时,A写主数据库->B写主数据库->B更新缓存->A更新缓存,则业务期望的缓存为B写入的,但事实缓存中留存A写入的;

存在的问题

  • 由于主数据库和从数据库不能及时同步,且读请求总是从从数据库中读并更新缓存,导致缓存始终和从数据库一致,即缓存旧数据的时候,主数据库已经是新数据了;
  • 解决方案:当主数据库同步到从数据库时,清除缓存。
您的支持是对我最大的鼓励!