当前位置: 首页 > news >正文

宁波搭建网站千库网下载

宁波搭建网站,千库网下载,wordpress更改固定链接后,企业网站建设 北京1. 前言 缓存穿透大家都知道#xff0c;这里简单过一下 缓存和数据库中都没有的数据#xff0c;而用户不断发起请求。比如查询id -1 的值 想着很多面向C端的查询接口#xff0c;可能都需要做一下缓存操作#xff0c;这里简单写了个自定义注解#xff0c;将查询结果(包含…1. 前言 缓存穿透大家都知道这里简单过一下 缓存和数据库中都没有的数据而用户不断发起请求。比如查询id -1 的值 想着很多面向C端的查询接口可能都需要做一下缓存操作这里简单写了个自定义注解将查询结果(包含null值)做个缓存 这个只能预防单秒内接口高频次请求要是一直搞随机值请求这个只能采取其他手段处理了比如IP拉黑什么的… 工具类留底以后兴许可以直接抄~(▽) 2. 正文 直接上代码了 2.1 自定义注解 CacheResult import java.lang.annotation.*;/*** pre* 接口缓存* 根据接口的第一个入参对象和返回值进行缓存* 缓存的前缀为 TEMPORARY_CACHE:类名:方法名:key值* 示例CacheResult(keyuserId _ ecommerceId, seconds 2L)* 缓存的keyTEMPORARY_CACHE:EcommerceController:getOrderList:407622341504839680_527203683850731520* /pre* author weiheng* date 2023-08-25**/ Documented Retention(RetentionPolicy.RUNTIME) Target({ElementType.TYPE,ElementType.METHOD}) public interface CacheResult {/** 入参支持 SpEL表达式 做参数提取比如入参对象有属性userId和ecommerceId - keyuserId _ ecommerceId */String key();/** 缓存时长单位秒 */long seconds(); }2.2 统一做缓存处理的切面 CacheAspect import lombok.extern.slf4j.Slf4j; import org.aspectj.lang.ProceedingJoinPoint; import org.aspectj.lang.annotation.Around; import org.aspectj.lang.annotation.Aspect; import org.redisson.api.RBucket; import org.springframework.expression.EvaluationContext; import org.springframework.expression.Expression; import org.springframework.expression.ExpressionParser; import org.springframework.expression.spel.standard.SpelExpressionParser; import org.springframework.expression.spel.support.StandardEvaluationContext; import org.springframework.stereotype.Component;import javax.annotation.Resource;/*** 缓存统一处理* author weiheng* date 2023-08-25**/ Slf4j Aspect Component public class CacheAspect {/** 临时缓存的统一前缀 */public static final String DEFAULT_PREFIX TEMPORARY_CACHE:;/** 缓存分隔符 */public static final String DELIMITER :;Resourceprivate RedissonHelper redissonHelper;/*** 拦截通知** param proceedingJoinPoint 入参* return Object*/Around(annotation(cacheSeconds))public Object around(ProceedingJoinPoint proceedingJoinPoint, CacheResult cacheSeconds) {Object[] args proceedingJoinPoint.getArgs();if (args.length 0) {// 方法没有入参不做缓存return proceed(proceedingJoinPoint);}// 1. 判断缓存中是否存在有则直接返回Object firstArg args[0];// 获取用户指定的参数ExpressionParser parser new SpelExpressionParser();EvaluationContext context new StandardEvaluationContext(firstArg);Expression keyExpression parser.parseExpression(cacheSeconds.key());String businessKey keyExpression.getValue(context, String.class);// 拼装缓存keyString className proceedingJoinPoint.getTarget().getClass().getSimpleName();String methodName proceedingJoinPoint.getSignature().getName();String prefix className DELIMITER methodName;String cacheKey DEFAULT_PREFIX prefix DELIMITER businessKey;RBucket? bucket redissonHelper.getBucket(cacheKey);boolean exists bucket.isExists();if (exists) {// 缓存中有值直接返回return bucket.get();}// 2. 执行方法体Object returnValue proceed(proceedingJoinPoint);// 3. 做个N秒的缓存long seconds cacheSeconds.seconds();redissonHelper.setValueAndSeconds(cacheKey, returnValue, seconds);return returnValue;}private Object proceed(ProceedingJoinPoint proceedingJoinPoint) {Object returnValue;try {returnValue proceedingJoinPoint.proceed();} catch (Throwable e) {log.error(error msg:, e);if (e instanceof SystemException) {throw (SystemException) e;}throw new SystemException(e.getMessage());}return returnValue;}3. 使用示例 原本定义个2秒就OK了这里为了方便看测试结果给了60秒 CacheResult(key“userId ‘_’ ecommerceId”, seconds 60L) redis缓存如下 就到这里了
http://www.w-s-a.com/news/481139/

相关文章:

  • 好的素材下载网站读书网网站建设策划书
  • 东莞南城网站建设wordpress用户投稿插件
  • 开个网站做代理赚钱吗沽源网站建设
  • 做卖车网站需要什么手续wordpress 主题 demo
  • 上海外贸网站开发公司建设内容
  • 网站制作品牌公司网站的字体颜色
  • 外贸wordpress模板常德seo快速排名
  • 网站后台认证码专门做网页的网站
  • 宁波企业品牌网站建设物流公司招聘
  • 北京机建网站做网站用angular
  • 攀枝花市网站建设outlook企业邮箱注册申请
  • 企业网站建设报价单免费劳务网站建设
  • 天津平台网站建设方案国际新闻最新消息今天乌克兰与俄罗斯
  • 食用油 网站 模板网页游戏网站在线玩
  • 做网站用的书新能源东莞网站建设技术支持
  • 漯河网站超市建设软件开发的五个阶段
  • 制作深圳网站建设阿里OSS做网站图库费用
  • 网页设计与网站建设 入门必练宜都网站seo
  • 网站设计沟通阆中网站网站建设
  • 缩短网址做钓鱼网站如何确保网站安全
  • 网店网站开发怎样用ps做企业网站
  • 南京门户网站建设做网站一般注册哪几类商标
  • 企业咨询管理服务wordpress seo tdk
  • 做网站前期创建文件夹flash 开发的网站
  • 天津网站制作培训搭建网站的工具
  • 江西网站建设价格低网上卖产品怎么推广
  • 做aelogo动效有什么好的网站建立网站站点的步骤
  • 无锡网站推广公司排名网站赚钱平台
  • 网站物理结构利用公共dns做网站解析
  • 苍南做网站微信建设网站哪家好