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

wordpress历史版本网络优化公司排名

wordpress历史版本,网络优化公司排名,网站更新和维护怎么做,辽阳网站建设Redisson 一、注解AOP 代码部分提取二、设置限流器的失效时间 一、注解AOP 代码部分提取 // 调用Reids工具类的rateLimiter 方法long number RedisUtils.rateLimiter(combineKey, rateType, count, time);redis 工具类 public class RedisUtils {private static final Redis…

Redisson

    • 一、注解AOP 代码部分提取
    • 二、设置限流器的失效时间

在这里插入图片描述
在这里插入图片描述

一、注解AOP 代码部分提取

在这里插入图片描述

// 调用Reids工具类的rateLimiter 方法long number = RedisUtils.rateLimiter(combineKey, rateType, count, time);

redis 工具类

public class RedisUtils {private static final RedissonClient CLIENT = SpringUtils.getBean(RedissonClient.class);/*** 限流** @param key          限流key* @param rateType     限流类型* @param rate         速率* @param rateInterval 速率间隔* @return -1 表示失败*/public static long rateLimiter(String key, RateType rateType, int rate, int rateInterval) {// 获取一个限流器RRateLimiter rateLimiter = CLIENT.getRateLimiter(key);// 将限流的配置信息保存在Redis中rateLimiter.trySetRate(rateType, rate, rateInterval, RateIntervalUnit.SECONDS);// tryAcquire 用于获取当前可用的许可数if (rateLimiter.tryAcquire()) {return rateLimiter.availablePermits();} else {return -1L;}}
}    

解析

rateLimiter.trySetRate(rateType, rate, rateInterval, RateIntervalUnit.SECONDS);

源码分析
源码截图:

在这里插入图片描述

分析:trySetRate 调用 trySetRateAsync 方法

@Overridepublic boolean trySetRate(RateType type, long rate, long rateInterval, RateIntervalUnit unit) {return get(trySetRateAsync(type, rate, rateInterval, unit));}@Overridepublic RFuture<Boolean> trySetRateAsync(RateType type, long rate, long rateInterval, RateIntervalUnit unit) {return commandExecutor.evalWriteNoRetryAsync(getRawName(), LongCodec.INSTANCE, RedisCommands.EVAL_BOOLEAN,"redis.call('hsetnx', KEYS[1], 'rate', ARGV[1]);"+ "redis.call('hsetnx', KEYS[1], 'interval', ARGV[2]);"+ "return redis.call('hsetnx', KEYS[1], 'type', ARGV[3]);",Collections.singletonList(getRawName()), rate, unit.toMillis(rateInterval), type.ordinal());}

逐步分析代码:

  • commandExecutor.evalWriteNoRetryAsync():这里使用了 Redis 的 EVAL 命令,这个命令允许执行 Lua 脚本,而不会受到 Redis 的同步阻塞操作。
  • getRawName():这是获取限流器的名称或标识。
  • RedisCommands.EVAL_BOOLEAN:表示执行 Lua 脚本后期望的返回值类型为 Boolean。

源码lua 脚本解释

– 源码lua 脚本

"redis.call('hsetnx', KEYS[1], 'rate', ARGV[1]);"
+ "redis.call('hsetnx', KEYS[1], 'interval', ARGV[2]);"
+ "return redis.call('hsetnx', KEYS[1], 'type', ARGV[3]);"--- 解释
这段 Lua 脚本中,通过 redis.call('hsetnx', KEYS[1], 'rate', ARGV[1]) 等命令,尝试对 RedisHash 数据结构进行设置操作。
首先尝试设置 'rate' 字段为传入的速率值;
然后尝试设置 'interval' 字段为传入的时间间隔值;
最后尝试设置 'type' 字段为传入的类型值。这里使用了 hsetnx 命令来进行设置操作,如果字段已存在,则不会进行设置操作。
  • Collections.singletonList(getRawName()):将限流器的名称作为参数传递给 Lua 脚本。
  • rate, unit.toMillis(rateInterval), type.ordinal():这三个参数分别是速率、时间间隔以毫秒为单位、以及限流类型

总结:这段代码本身并没有提供设置限流器自动过期的功能。在 Redisson 中,限流器自动过期的功能通常不是默认包含在限流器的设置中。

二、设置限流器的失效时间

限流器自动过期(是指的是限流这个功能),可以使用expire进行失效时间设置

修改后代码:

/*** 限流** @param key          限流key* @param rateType     限流类型* @param rate         速率* @param rateInterval 速率间隔* @param expirationTimeInSeconds 过期时间(秒)* @param isExpire 是否设置限流器过期* @return -1 表示失败*/public static long rateLimiter(String key, RateType rateType, int rate, int rateInterval, long expirationTimeInSeconds,boolean isExpire) {RRateLimiter rateLimiter = CLIENT.getRateLimiter(key);rateLimiter.trySetRate(rateType, rate, rateInterval, RateIntervalUnit.SECONDS);if(isExpire){// 是否设置过期时间rateLimiter.expire(expirationTimeInSeconds, TimeUnit.SECONDS);}if (rateLimiter.tryAcquire()) {return rateLimiter.availablePermits();} else {return -1L;}
}

如果代码写的有问题,欢迎大家评论交流,进行指点!!!

http://www.dt0577.cn/news/29841.html

相关文章:

  • 免费网站建设推荐河南网站排名优化
  • 莱西建设局官方网站网络推广怎么找客户
  • 网站手机网页如何做青岛网站排名提升
  • 怎么做和美团一样的网站百度文库账号登录入口
  • 做标签网站是什么网页搜索关键字
  • 之前做的网站说要升级上海网络营销有限公司
  • 找人建站做网站需要注意什么问题产品市场推广计划书
  • ipad做电影网站杭州百度首页优化
  • id转换为wordpressseo的定义是什么
  • 音乐网站设计毕业论文seo在中国
  • 大型门户网站都有自助建站seo
  • wordpress转代码seo视频教学网站
  • 万户做网站很垃圾关键词优化怎么做
  • 推广员网站qq推广链接生成
  • 网站建设实训该写哪些内容北京网站开发
  • wordpress+blog+推荐seo在线培训机构
  • 电商网站wordpressgoogle搜索app下载
  • png免费素材网站南宁排名seo公司
  • 一人开公司做网站创业百度扫一扫识别图片
  • 做网站时无法上传图片建立一个国外的网站
  • 做安防在哪个网站做广告呢怎么拿到百度推广的代理
  • 集团公司网站模板成都调查事务所
  • 普陀网站开发培训学校软文生成器
  • 新闻20条摘抄大全重庆百度搜索优化
  • 长沙官网网站建设青岛网站建设推广公司
  • 聚名网怎么注销账号58同城关键词怎么优化
  • php语言开发网站流程海豹直播nba
  • 如何在本地搭建wordpress无锡seo
  • 做网站关键词优化的公司企业邮箱网页版
  • 做国际网站装修成都网站关键词推广