KeatingSmith
V2EX  ›  问与答

如何保证缓存一致性?

  •  
  •   KeatingSmith · Sep 7, 2018 · 2316 views
    This topic created in 2820 days ago, the information mentioned may be changed or developed.

    1、

          client
         /      \
        /        \
       /          \
      db           cache
    

    2、

          client
             |
             |
             |
             ˇ
           redis
             |
             |
             |
             ˇ
             db
    
    Supplement 1  ·  Sep 7, 2018
    1、

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

    2、

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