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

电子商城网站设计代驾公司注册需要什么条件

电子商城网站设计,代驾公司注册需要什么条件,wordpress显示页面加载速度,自己怎样做海外网站学而不思则罔#xff0c;思而不学则殆 引言 上篇文章讲解了Lua脚本#xff0c;事务和Pipline之间的使用方式和性能差距#xff0c;本篇文章将聚焦Lua脚本#xff0c;我将用三种写法来展现如何实现一个Redis限流器 固定窗口限流 固定窗口限流也是最简单的限流算法#x…                   学而不思则罔思而不学则殆 引言 上篇文章讲解了Lua脚本事务和Pipline之间的使用方式和性能差距本篇文章将聚焦Lua脚本我将用三种写法来展现如何实现一个Redis限流器 固定窗口限流 固定窗口限流也是最简单的限流算法它将时间划分为固定大小的窗口每个窗口内允许的请求次数是固定的也是最好理解的lua脚本 -- 获取限流的键名通常为一个唯一标识如用户 ID、IP 等 local key KEYS[1] -- 获取该窗口内允许的最大请求次数 local limit tonumber(ARGV[1]) -- 获取当前窗口的时间长度秒 local window tonumber(ARGV[2])-- 获取当前键对应的请求次数 local current tonumber(redis.call(get, key) or 0)-- 如果当前请求次数超过了限制返回 0 表示限流 if current 1 limit thenreturn 0 else-- 否则请求次数加 1local count redis.call(incr, key)-- 如果是第一次请求设置过期时间保证窗口的有效性if count 1 thenredis.call(expire, key, window)end-- 返回 1 表示允许请求return 1 end 本质是一个时间长度也就是窗口中我只允许固定次数通过所以由此我们可以延伸出滑动窗口 滑动窗口限流 滑动窗口限流算法在固定窗口的基础上进行了改进它将时间窗口划分为更小的时间片每个时间片记录该时间段内的请求次数通过滑动窗口的方式统计一定时间内的总请求次数 -- 获取限流的键名 local key KEYS[1] -- 获取该窗口内允许的最大请求次数 local limit tonumber(ARGV[1]) -- 获取当前时间戳毫秒 local now tonumber(ARGV[2]) -- 获取滑动窗口的时间长度毫秒 local window tonumber(ARGV[3])-- 移除窗口外的请求记录 redis.call(zremrangebyscore, key, 0, now - window) -- 获取当前窗口内的请求数量 local current tonumber(redis.call(zcard, key))-- 如果当前请求次数超过了限制返回 0 表示限流 if current 1 limit thenreturn 0 else-- 否则将当前请求的时间戳添加到有序集合中redis.call(zadd, key, now, now)-- 返回 1 表示允许请求return 1 end 原本的维度是一个窗口而现在是将窗口放大成时间单位然后用颗粒度更小的窗口去获取次数最后统计这个大窗口的流量不变就行 令牌桶限流 令牌桶算法可以说是一种比较常用的限流算法它以固定的速率向桶中添加令牌每个请求需要从桶中获取一个或多个令牌才能被处理 -- 获取令牌桶的键名 local key KEYS[1] -- 获取桶的容量 local capacity tonumber(ARGV[1]) -- 获取令牌生成的速率每秒生成的令牌数 local rate tonumber(ARGV[2]) -- 获取当前时间戳秒 local now tonumber(ARGV[3]) -- 获取每个请求需要的令牌数 local tokens_needed tonumber(ARGV[4])-- 获取上次更新的时间和剩余的令牌数 local last_update tonumber(redis.call(hget, key, last_update) or now) local tokens tonumber(redis.call(hget, key, tokens) or capacity)-- 计算从上次更新到现在应该生成的令牌数 local new_tokens math.min(capacity, tokens (now - last_update) * rate)-- 如果剩余的令牌数足够处理请求 if new_tokens tokens_needed then-- 更新剩余的令牌数local remaining_tokens new_tokens - tokens_needed-- 更新上次更新的时间和剩余的令牌数redis.call(hset, key, last_update, now)redis.call(hset, key, tokens, remaining_tokens)-- 返回 1 表示允许请求return 1 else-- 否则返回 0 表示限流return 0 end 实战Java 一般我们的Lua脚本都是放在配置文件中管理无论是阅读性还是维护性都是最优解 例如把上面的任一脚本创建于rate_limiter.lua文件中自定义名称 配合Jedis我们常用的redis命令框架 import redis.clients.jedis.Jedis; import java.io.BufferedReader; import java.io.FileReader; import java.io.IOException; import java.util.Arrays; import java.util.List;public class RedisRateLimiterFromConfigJedis {public static void main(String[] args) {// 连接 RedisJedis jedis new Jedis(localhost, 6379);// 限流键名String key rate_limit:user:1;// 窗口内允许的最大请求次数int limit 10;// 窗口时间长度秒int window 60;// 读取 Lua 脚本文件String script readScriptFromFile(rate_limiter.lua);// 键名参数列表ListString keys Arrays.asList(key);// 其他参数列表ListString argsList Arrays.asList(String.valueOf(limit), String.valueOf(window));// 执行 Lua 脚本Object result jedis.eval(script, keys, argsList);if (result instanceof Long (Long) result 1) {System.out.println(允许请求);} else {System.out.println(请求被限流);}// 关闭连接jedis.close();}private static String readScriptFromFile(String filePath) {StringBuilder script new StringBuilder();try (BufferedReader reader new BufferedReader(new FileReader(filePath))) {String line;while ((line reader.readLine()) ! null) {script.append(line).append(\n);}} catch (IOException e) {e.printStackTrace();}return script.toString();} } 其中端口和文件名可以自定义
http://www.hkea.cn/news/14444841/

相关文章:

  • 网站排名制作公司wordpress标题怎么改
  • 阿勒泰建设招聘网站新手如何做微信公众号
  • 不会做网站vs建设网站
  • 杭州网站建设设计公司哪家好建设化妆品网站的成本
  • 仿网站后台怎么做台州做网站最好的
  • 江西建设监督网新网站网站建设需准备什么软件
  • 毕设敦煌壁画网站开发选题背景网站做推广团队
  • seo诊断书案例郑州网站优化seo
  • 苏州建材装修网站建设wordpress 头像插件
  • 制作小公司网站一般多少钱关键词采集网站
  • 如何查找网站根目录用网上的文章做网站行吗
  • 建论坛型网站制作教育类网站
  • 个人博客网站制作搭建网站建设模板html
  • 教育网站建设案例敬请期待同义词
  • 提供深圳网站制作公司ui设计培训学费多少
  • 中国建设银行官网站贺岁产品百度问答库
  • 怎么做一款网站autocad二次开发
  • 海口旅游类网站建设题库网站建设
  • 国外优质设计网站河北网站制作公司
  • 建站公司不给源码惠州网站开发公司
  • 宜昌网站制作装饰公司网站源码下载
  • wordpress 重写西安seo外包行者seo06
  • wordpress主题离线编辑googleseo是什么
  • huang色网站网站seo源码
  • 网站信息备案查询系统做静态网站工资多少
  • 做网站设计要多少钱能在线做初中题的网站
  • 孝感网站开发的公司电话网站建设薪水
  • 网站结的建设ppt哈尔滨网站建设代理商
  • 电商网站建设方面的毕业设计asp网站模板安装教程
  • 国外做节目包装的网站wordpress edd 卡密