Redis服务挂掉后,如何保证后台服务不受影响,直接到数据库里获取数据?

项目使用spring框架,使用RedisTemplate去访问Redis数据。程序的逻辑是这样的:先访问Redis,有则直接返回数据;无则到数据库去取,取过来后顺便放一份在Redis中,供后续使用。

现实情况:Redis服务如果挂掉,那么RedisTemplate操作Redis时直接抛异常,造成后台服务不可用。
期望情况:Redis服务如果挂掉,不抛异常,直接到数据库获取,这样后台服务还是正常的。

因为RedisTemplate操作Redis散落在各个业务方法里面,有没有统一的处理方法?

阅读 12.1k
4 个回答

可以对访问Redis做一层gateWay的包装,redis抛异常后直接返回null,查询走数据库。同时报警。或者对Redis访问增加降级方案,异常过多时直接降级,走数据库查询。

目前我所在的公司方案:redis集群。redis作为二级缓存,ehcache作为一级缓存。数据读取先从一级缓存中读取,不存在时再从二级缓存读取,这样对二级缓存 Redis 的访问次数降到很低。再加上redis集群,挂的概率很低很低。

可以用熔断器降级比如可以用Hystrix,在redis取数据做一次熔断降级如果报错了直接走数据库。

redis高可用(集群+主从),别让挂。
redis挂了,你数据库也离不远了

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏