开发者社区> 问答> 正文

如何在redis异常时读取mysql的数据,有没有类似AOP的解决方案?

项目内存数据库使用的是redis,持久数据库使用的是mysql,如何确保在redis异常时,读取mysql中的数据,目前只想到在使用redis命令时加上try/catch判断,但项目中很大地方都要用到,这么代码很繁琐,维护也有困难,有没有类似AOP的解决方案?项目使用的jedis来访问redis

展开
收起
落地花开啦 2016-02-26 15:10:29 2927 0
1 条回答
写回答
取消 提交回答
  • 喜欢技术,喜欢努力的人
    @Aspect
    public class MyIntercept {
     
        @Resource
        private IRedisService service;
     
        @Pointcut("execution(* someMethod(..))")
        private void myPointCutMethod() {
        }
     
        @Around("myPointCutMethod()")
        public MyBean interceptor(ProceedingJoinPoint pjp) {
            MyBean bean = null;
            Object[] args = pjp.getArgs();
            String beanId = (String) args[0];
            logger.debug("beanId = " + beanId);
            bean = service.findbeanById(beanId);
     
            if (bean != null) {
                try {
                    logger.debug("拦截到" + pjp.getSignature().getName() + "方法");
                } catch (Throwable e) {
                    logger.error(e.getMessage());
                }
            } else if (bean == null) {
                try {
                    logger.debug("bean is null,redis查询异常,从数据库中查询");
                    bean = (MyBean) pjp.proceed();
                } catch (Throwable e) {
                    logger.debug(e.getMessage());
                }
            }
            return bean;
        }
    }
    2019-07-17 18:48:17
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
Redis集群演化的心路历程——从2.x到3.0时代 立即下载
微博的Redis定制之路 立即下载
云数据库Redis版的开源之路 立即下载

相关镜像