EscYezi
V2EX  ›  Java

SpringBoot 应用中 redis 挂掉如何保证不报错而是从数据库中查询数据?

  •  
  •   EscYezi ·
    escyezi · Mar 30, 2020 via iPhone · 4453 views
    This topic created in 2259 days ago, the information mentioned may be changed or developed.

    搜索一番只找到了一个方法:把 redis 取数据的操作放在 try catch 中

    感觉这个方法似乎有效但是不太稳妥?毕竟 try catch 也是要耗性能的,有没有更好的实现方式呢

    12 replies    2020-03-31 14:52:53 +08:00
    gscoder
        1
    gscoder  
       Mar 30, 2020   ❤️ 1
    熔断降级了解一下 Hystrix 。 原理很简单,自己也可以实现:用一个标志位标记 redis 的健康状态,在一次失败 /n 次失败后,操作跳过 redis
    gaobing
        2
    gaobing  
       Mar 30, 2020   ❤️ 1
    肯定不能一直 try catch,使用标志位,catch 里面 flag 设为 false,再开一个定时任务线程 测试 redis 状态,好了的话改为 true 。
    if(flag){
    try{
    //redis 操作
    } catch {
    flag = false ;
    //再开一个定时任务线程 测试 redis 状态
    }
    } else{
    // 数据库操作
    }
    xuanbg
        3
    xuanbg  
       Mar 30, 2020
    如果 redis 挂掉,你这数据库能扛得住么……扛不住不就全都挂掉了吗。所以啊,怕 redis 挂掉,就得搞集群,让它不会挂掉啊。
    yongliu
        4
    yongliu  
       Mar 30, 2020
    自己创建一个 CacheErrorHandler bean,具体可以参考下这里:
    https://hellokoding.com/spring-caching-custom-error-handler/
    des
        5
    des  
       Mar 30, 2020
    redis 挂掉你就不怕数据库炸掉 ?
    lovedebug
        6
    lovedebug  
       Mar 30, 2020   ❤️ 1
    EscYezi
        7
    EscYezi  
    OP
       Mar 30, 2020 via iPhone
    @xuanbg 现在 redis 是有集群的,只是考虑到有极端情况比如网络波动之类
    hantsy
        8
    hantsy  
       Mar 30, 2020   ❤️ 1
    Spring Retry
    huntcool001
        9
    huntcool001  
       Mar 30, 2020   ❤️ 1
    @EscYezi 可以跨可用区部署 redis 集群.
    xuanbg
        10
    xuanbg  
       Mar 31, 2020
    @EscYezi 你要这么想的话,这活就没法干了,这世界上哪有万全的事情呢。所以你的系统要允许失败,只要失败不会造成数据的错乱就可以了。
    Ahaochan
        11
    Ahaochan  
       Mar 31, 2020
    开集群,开熔断,还要更高可用性就两地三中心,再高就上月球基地部署服务器
    Aresxue
        12
    Aresxue  
       Mar 31, 2020
    集群熔断降级重启定时扫描
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2799 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 44ms · UTC 03:55 · PVG 11:55 · LAX 20:55 · JFK 23:55
    ♥ Do have faith in what you're doing.