原理概要:
プログラムはタイムスライスを決定し、タイムスライスが小さいほど制御精度が高くなります。アクセス制御には複数のタイム スライスが含まれます。
プログラムが特定の時刻にアクセス レコードを追加する必要がある場合、プログラムはまず現在時刻に基づいて使用するタイム スライスを計算し、このタイム スライスのカウンタに 1 を加算します。
プログラムは、一定期間内に何回アクセスされたかを判断するとき、まずこの期間に含まれるタイム スライスの数を計算し、次にこれらのタイム スライスをすべて取り出し、カウンターを追加して戻ります。
原理の紹介とプログラム関連のソースコードはこちら(nodejs)
Redisを使ったアクセス頻度制御モジュールの構築方法
使用例(nodejs) :
varredback=require('redback').createClient(),
ratelimit=redback.createRateLimit('requests');
//指定された IP のカウントをインクリメントします
ratelimit.add( '127.0.0.1');
//最後の 20 秒間のリクエストの数をカウントします
ratelimit.count('127.0.0.1',20,function(err,requests){
if(requests>30){
//何らかの方法でユーザーを抑制します..
}
});
以上がRedisでアクセス頻度制御モジュールを構築する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。