现在的位置: 首页 > 数据库 > 正文

怎样用Redis构建访问频率控制模块

2020年07月01日 数据库 ⁄ 共 777字 ⁄ 字号 评论关闭

  访问频率控制模块的作用是限制客户端对服务器的访问频率,比如某个IP对某一页面在1分钟内访问一个页面超过100次,那么就返回给客户端一个页面让其输入验证码等。相信经常访问Google的同学都有过被要求输入验证码的经历。下面学步园小编来讲解下怎样用Redis构建访问频率控制模块?

  怎样用Redis构建访问频率控制模块

  原理概述:

  程序会确定一个时间片,这个时间片越小,控制精度越高。一个访问控制涉及到多个时间片。

  程序在某个时间要求加入一次访问记录,会先针对当前时间计算要用到的时间片,并对这个时间片的counter加1。

  程序在判断一段时间访问了多少次时,会先计算这段时间包含多少个时间片,然后取出所有这些时间片将counter相加后返回。

  原理介绍看这里,程序相关源码在这里(nodejs)

  怎样用Redis构建访问频率控制模块

  使用示例(nodejs):

  varredback=require('redback').createClient(),

  ratelimit=redback.createRateLimit('requests');

  //IncrementthecountforthespecifiedIP

  ratelimit.add('127.0.0.1');

  //Countthenumberofrequestsinthelast20seconds

  ratelimit.count('127.0.0.1',20,function(err,requests){

  if(requests>30){

  //Throttletheuserinsomeway..

  }

  });

  以上就是关于“怎样用Redis构建访问频率控制模块”的内容,希望对大家有用。更多资讯请关注学步园。学步园,您学习IT技术的优质平台!

抱歉!评论已关闭.