项目使用spring框架,使用RedisTemplate去访问Redis数据。程序的逻辑是这样的:先访问Redis,有则直接返回数据;无则到数据库去取,取过来后顺便放一份在Redis中,供后续使用。
现实情况:Redis服务如果挂掉,那么RedisTemplate操作Redis时直接抛异常,造成后台服务不可用。
期望情况:Redis服务如果挂掉,不抛异常,直接到数据库获取,这样后台服务还是正常的。
因为RedisTemplate操作Redis散落在各个业务方法里面,有没有统一的处理方法?
项目使用spring框架,使用RedisTemplate去访问Redis数据。程序的逻辑是这样的:先访问Redis,有则直接返回数据;无则到数据库去取,取过来后顺便放一份在Redis中,供后续使用。
现实情况:Redis服务如果挂掉,那么RedisTemplate操作Redis时直接抛异常,造成后台服务不可用。
期望情况:Redis服务如果挂掉,不抛异常,直接到数据库获取,这样后台服务还是正常的。
因为RedisTemplate操作Redis散落在各个业务方法里面,有没有统一的处理方法?
目前我所在的公司方案:redis集群。redis作为二级缓存,ehcache作为一级缓存。数据读取先从一级缓存中读取,不存在时再从二级缓存读取,这样对二级缓存 Redis 的访问次数降到很低。再加上redis集群,挂的概率很低很低。
3 回答2.7k 阅读✓ 已解决
3 回答4.2k 阅读✓ 已解决
8 回答3.8k 阅读
4 回答2.8k 阅读✓ 已解决
2 回答2.7k 阅读✓ 已解决
3 回答2.6k 阅读✓ 已解决
4 回答1.9k 阅读
可以对访问Redis做一层gateWay的包装,redis抛异常后直接返回null,查询走数据库。同时报警。或者对Redis访问增加降级方案,异常过多时直接降级,走数据库查询。