redis宕机如何保证业务正常 redis宕机怎么办

主机教程 建站分享 2年前 (2022-10-11) 190次浏览

文章摘要:redis宕机如何保证业务正常 redis宕机怎么办

redis宕机可通过实现Redis缓存切面来保证业务正常,示例代码: package com.raymon.h […]

redis宕机可通过实现Redis缓存切面来保证业务正常,示例代码:

package com.raymon.hcp.security.aspect;

import com.raymon.hcp.security.annotation.CacheException;

import org.aspectj.lang.ProceedingJoinPoint;

import org.aspectj.lang.Signature;

import org.aspectj.lang.annotation.Around;

import org.aspectj.lang.annotation.Aspect;

import org.aspectj.lang.annotation.Pointcut;

import org.aspectj.lang.reflect.MethodSignature;

import org.slf4j.Logger;

import org.slf4j.LoggerFactory;

import org.springframework.core.annotation.Order;

import org.springframework.stereotype.Component;

import java.lang.reflect.Method;

/**

* Redis缓存切面,防止Redis宕机影响正常业务逻辑

* Created by zhanglei on 2020/3/17.

*/

@Aspect

@Component

@Order(2)

public class RedisCacheAspect {

private static Logger LOGGER = LoggerFactory.getLogger(RedisCacheAspect.class);

@Pointcut("execution(public * com.raymon.hcp.portal.service.*CacheService.*(..)) || execution(public * com.raymon.hcp.service.*CacheService.*(..))")

public void cacheAspect() {

}

@Around("cacheAspect()")

public Object doAround(ProceedingJoinPoint joinPoint) throws Throwable {

Signature signature = joinPoint.getSignature();

MethodSignature methodSignature = (MethodSignature) signature;

Method method = methodSignature.getMethod();

Object result = null;

try {

result = joinPoint.proceed();

} catch (Throwable throwable) {

//有CacheException注解的方法需要抛出异常

if (method.isAnnotationPresent(CacheException.class)) {

throw throwable;

} else {

LOGGER.error(throwable.getMessage());

}

}

return result;

}

}


声明:
若非注明,本站文章源于互联网收集整理和网友分享发布,如有侵权,请联系站长处理。
文章名称:redis宕机如何保证业务正常 redis宕机怎么办
文章链接:http://www.7966.org/post/15768.html
转载请注明出处

喜欢 (0)