搜索一番只找到了一个方法:把 redis 取数据的操作放在 try catch 中
感觉这个方法似乎有效但是不太稳妥?毕竟 try catch 也是要耗性能的,有没有更好的实现方式呢
1
gscoder 2020-03-30 21:05:51 +08:00 1
熔断降级了解一下 Hystrix 。 原理很简单,自己也可以实现:用一个标志位标记 redis 的健康状态,在一次失败 /n 次失败后,操作跳过 redis
|
2
gaobing 2020-03-30 21:11:34 +08:00 1
肯定不能一直 try catch,使用标志位,catch 里面 flag 设为 false,再开一个定时任务线程 测试 redis 状态,好了的话改为 true 。
if(flag){ try{ //redis 操作 } catch { flag = false ; //再开一个定时任务线程 测试 redis 状态 } } else{ // 数据库操作 } |
3
xuanbg 2020-03-30 21:15:37 +08:00
如果 redis 挂掉,你这数据库能扛得住么……扛不住不就全都挂掉了吗。所以啊,怕 redis 挂掉,就得搞集群,让它不会挂掉啊。
|
4
yongliu 2020-03-30 21:51:03 +08:00
自己创建一个 CacheErrorHandler bean,具体可以参考下这里:
https://hellokoding.com/spring-caching-custom-error-handler/ |
5
des 2020-03-30 22:04:19 +08:00
redis 挂掉你就不怕数据库炸掉 ?
|
6
lovedebug 2020-03-30 22:23:23 +08:00 1
|
8
hantsy 2020-03-30 22:56:51 +08:00 1
Spring Retry
|
9
huntcool001 2020-03-30 23:07:03 +08:00 1
@EscYezi 可以跨可用区部署 redis 集群.
|
10
xuanbg 2020-03-31 04:07:33 +08:00
@EscYezi 你要这么想的话,这活就没法干了,这世界上哪有万全的事情呢。所以你的系统要允许失败,只要失败不会造成数据的错乱就可以了。
|
11
Ahaochan 2020-03-31 09:30:12 +08:00
开集群,开熔断,还要更高可用性就两地三中心,再高就上月球基地部署服务器
|
12
Aresxue 2020-03-31 14:52:53 +08:00
集群熔断降级重启定时扫描
|