V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
KeatingSmith
V2EX  ›  问与答

如何保证缓存一致性?

  •  
  •   KeatingSmith · 2018-09-07 09:52:33 +08:00 · 1961 次点击
    这是一个创建于 2270 天前的主题,其中的信息可能已经有所发展或是发生改变。

    1、

          client
         /      \
        /        \
       /          \
      db           cache
    

    2、

          client
             |
             |
             |
             ˇ
           redis
             |
             |
             |
             ˇ
             db
    
    第 1 条附言  ·  2018-09-07 10:26:47 +08:00
    1、

    client 先查询 缓存数据库 有没有缓存,如果没有再从 db 里面读取,随后再写入缓存。

    2、

    client 直接从 缓存数据库 读取数据,缓存数据库以某种方式同步源数据库。
    9 条回复    2018-09-07 15:03:53 +08:00
    tt67wq
        1
    tt67wq  
       2018-09-07 10:07:43 +08:00
    这俩图你是要说啥
    Aliencn
        2
    Aliencn  
       2018-09-07 10:13:16 +08:00
    入库的时候写两遍
    flight2006
        3
    flight2006  
       2018-09-07 10:43:21 +08:00
    一般用第一种,第二种的某种同步方式需要维护类似同步定时任务,而且还强依赖了缓存,缓存挂了你系统就不可用了,第一种缓存挂了 DB 还能备用
    blackjar
        4
    blackjar  
       2018-09-07 10:49:13 +08:00
    @flight2006 #3 db 备用 缓存不能有备用?用第一种缓存用不用备用? 不用备用 缓存挂了 直接压死 db ?
    hcymk2
        5
    hcymk2  
       2018-09-07 11:11:24 +08:00
    flight2006
        6
    flight2006  
       2018-09-07 13:43:07 +08:00
    @blackjar 杠精吧你
    blackjar
        7
    blackjar  
       2018-09-07 13:47:49 +08:00
    @flight2006 #6 半瓶子混子 到处教人 被反驳一律先戴上杠精帽子 哈哈
    flight2006
        8
    flight2006  
       2018-09-07 13:55:02 +08:00
    @blackjar 降级懂不懂,你缓存备用是运维层面的备份,恢复需要时间;大部分公司业务场景都还没到直接到 DB 都压垮的程度
    sun019
        9
    sun019  
       2018-09-07 15:03:53 +08:00
    需要定期更新缓存,读文章或者实时数据要求不高的可以用第一种。
    对数据读写实时要求高,抢购秒杀购买,建议用第二种。
    当然各有优缺点
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2701 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 03:48 · PVG 11:48 · LAX 19:48 · JFK 22:48
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.