当前位置: 首页 > redis, 分布式系统, 缓存系统 > 正文

Redis应用:实现访问频率控制模块

关键字:
1 星2 星3 星4 星5 星 (1 次投票, 评分: 5.00, 总分: 5)
Loading ... Loading ...
baidu_share

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

下面是一个使用Redis构建这样一个访问控制模块的例子,其一大特点是可以通过参数对精度与性能之间进行调整。

原理概述:

程序会确定一个时间片,这个时间片越小,控制精度越高。一个访问控制涉及到多个时间片。
程序在某个时间要求加入一次访问记录,会先针对当前时间计算要用到的时间片,并对这个时间片的counter加1。
程序在判断一段时间访问了多少次时,会先计算这段时间包含多少个时间片,然后取出所有这些时间片将counter相加后返回。
原理介绍看这里,程序相关源码在这里(nodejs)
使用示例(nodejs):

1
2
3
4
5
6
7
8
9
10
11
12
var redback = require('redback').createClient(),
    ratelimit = redback.createRateLimit('requests');
 
//Increment the count for the specified IP
ratelimit.add('127.0.0.1');
 
//Count the number of requests in the last 20 seconds
ratelimit.count('127.0.0.1', 20, function (err, requests) {
     if (requests > 30) {
         //Throttle the user in some way..
     }
});

本文固定链接: http://www.chepoo.com/redis-apply-access-frequency-control-module.html | IT技术精华网

【上一篇】
【下一篇】

Redis应用:实现访问频率控制模块:等您坐沙发呢!

发表评论