V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
yodhcn
V2EX  ›  Redis

Redis 服务挂了,一段时间后又恢复,不会造成缓存与数据库不一致吗?

  •  
  •   yodhcn ·
    yodhcn · 186 天前 via Android · 1872 次点击
    这是一个创建于 186 天前的主题,其中的信息可能已经有所发展或是发生改变。
    Redis 服务挂了,一段时间后又恢复,如果这段时间能内,有修改数据库的操作,不会造成缓存与数据库不一致吗?

    如果是 Redis 主从集群,能避免这种情况吗?集群全挂了呢?


    注:目前解决缓存与数据库一致所使用的方案,是双写方案,写操作-先写数据库再删缓存,读操作-有缓存就读缓存,无缓存就读数据库后重建缓存

    但这种方案的问题是,缓存服务挂了后,在写操作时无法删掉过期缓存,最后等缓存服务恢复,读操作读到的就是过期数据


    请老哥们指点一下,
    难道因为缓存服务挂掉,就拒绝一切写操作吗?
    11 条回复    2023-10-22 16:21:02 +08:00
    justthewayyouare
        1
    justthewayyouare  
       186 天前 via iPhone
    不用 redis 就行了。
    calmzhu
        2
    calmzhu  
       186 天前
    加个监控啊,挂了恢复前清下缓存。
    crysislinux
        3
    crysislinux  
       186 天前 via Android
    集群挂了还说啥,站点就 down 呗。用 Redis 集群的站 Redis 挂了基本也没法儿提供服务了
    devopsdogdog
        4
    devopsdogdog  
       186 天前 via Android
    好好想想缓存是不是这样用,你都写 mysql 了,redis 不写就好了,只靠读的时候缓存一下。

    缓存数据一般不用于这种需要强一致性的。
    HuLiY
        5
    HuLiY  
       186 天前
    双写方案,写操作-先写数据库再删缓存,读操作-有缓存就读缓存[并设置一个合适的过期时间],无缓存就读数据库后重建缓存
    👆就可以了。
    过期时间最好是随机的,避免缓存雪崩。
    这种方案一般用于一致性要求低的场景。
    HuLiY
        6
    HuLiY  
       186 天前
    -----------上一条写错了----------------
    双写方案,写操作-先写数据库再删缓存,读操作-有缓存就读缓存,无缓存就读数据库后重建缓存[并设置一个合适的过期时间]
    👆就可以了。
    过期时间最好是随机的,避免缓存雪崩。
    这种方案一般用于一致性要求低的场景。
    EarthChild
        7
    EarthChild  
       186 天前
    那就做个标识啊,redis 读/写不成就做个标识,等读出来了,这个标识为 true ,就清空 redis 缓存,每次读/写 redis 前都判断一下这个标识都行了。
    kuituosi
        8
    kuituosi  
       185 天前
    严格来说就没有方法保证一致性,不管是双写还是集群。
    对一致性要求高就不要缓存,普通的情况把过期时间设置足够短就可以
    julyclyde
        9
    julyclyde  
       185 天前
    再恢复的时候它应该是空白的,然后逐渐被双读操作给填充出来
    而不是持有死之前那一份数据
    hangszhang
        10
    hangszhang  
       185 天前
    试试 binlog 同步到 redis 的方案
    giiiiiithub
        11
    giiiiiithub  
       185 天前
    这种场景可以在恢复后先清空缓存,清空后再给应用使用
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1021 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 20:15 · PVG 04:15 · LAX 13:15 · JFK 16:15
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.