Redis服务挂掉后,如何保证后台服务不受影响,直接到数据库里获取数据?
项目使用spring框架,使用RedisTemplate去访问Redis数据。程序的逻辑是这样的:先访问Redis,有则直接返回数据;无则到数据库去取,取过来后顺便放一份在Redis中,供后续使用。
现实情况:Redis服务如果挂掉,那么RedisTemplate操作Redis时直接抛异常,造成后台服务不可用。
期望情况:Redis服务如果挂掉,不抛异常,直接到数据库获取,这样后台服务还是正常的。
因为RedisTemplate操作Redis散落在各个业务方法里面,有没有统一的处理方法?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
可以对访问Redis做一层gateWay的包装,redis抛异常后直接返回null,查询走数据库。同时报警。或者对Redis访问增加降级方案,异常过多时直接降级,走数据库查询。
目前我所在的公司方案:redis集群。redis作为二级缓存,ehcache作为一级缓存。数据读取先从一级缓存中读取,不存在时再从二级缓存读取,这样对二级缓存 Redis 的访问次数降到很低。再加上redis集群,挂的概率很低很低。
可以用熔断器降级比如可以用Hystrix,在redis取数据做一次熔断降级如果报错了直接走数据库。
redis高可用(集群+主从),别让挂。
redis挂了,你数据库也离不远了