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

做网站有未来吗做网站就上凡科建站

做网站有未来吗,做网站就上凡科建站,如何建设简单小型网站,网页设计软件免费下载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 RFutureBoolean 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]) 等命令尝试对 Redis 的 Hash 数据结构进行设置操作。 首先尝试设置 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.hkea.cn/news/14518275/

相关文章:

  • 潍坊建设厅官方网站html网页设计代码word文档
  • 建设银行档案管理网站门户网站源码入驻
  • 安康网站定制厂家wordpress左侧导航
  • 建个商城网站多少钱wordpress如何压缩图片大小
  • 望牛墩网站建设公司php国内外发展现状
  • 岳麓区做网站网站开发的完整流程图
  • 珠海网站建设多少钱怎么做网站卖东西
  • 从化一站式网站建设观山湖网站建设推广
  • 经营网站 备案信息网站如何做服务器授权
  • php后台关闭网站 功能怎么实现网站怎么做地区屏蔽js
  • 梧州网站推广外包服务做网站开发要具备哪些素质
  • 国内网站设计案例欣赏闲鱼网站建设
  • 如何上传视频到公司网站网站不被收录怎么办
  • 安徽网站建设制作网站开发 报价单 表格
  • 重庆皇华建设集团有限公司网站网站建设主机
  • 建站行业消失了吗网站需求建设书
  • 个体户备案网站可以做企业站吗百度查重工具
  • 武昌网站建设价格多少钱网站建设需注意点
  • 国外常用的网站开发系统通付盾 建设网站
  • php网站建设论文哪些网站是营销型网站及原因
  • 上海微网站建设简述程序开发的流程
  • 网站模板怎么进高端网站建设企业网站建站
  • 山西建设局网站首页试玩app推广网站建设
  • 做暧暧免费网站wordpress怎么改颜色
  • 网站建设作为四川建设网网站
  • 网站建设保定网站建设的方式
  • 网站的管理知乎关键词搜索排名
  • 简约网站模版网站不被收录怎么办
  • iis8出现在网站首页免费的微网站制作平台
  • 如何用源码搭建网站源码第三方做网站