Redisによるレートリミティングの仕組み
Redisでレートリミットを実現する方法は次のとおりです。
- 固定窓アルゴリズム:リクエストをカウントし、一定の時間内に閾値を超えるリクエストがある場合はリクエストを拒否する。
- スライドウィンドウアルゴリズム:時間を固定された時間幅に分割し、1時間幅ごとにリクエスト数を記録し、総リクエスト数を計算。総リクエスト数がしきい値を超えると、リクエストを拒否。
- トークンバケット法:一定の速度でトークンをバケットに追加し、リクエストごとに1トークンを消費。バケットにトークンがなければリクエストは拒否される。
- 一定の速度でバケツから水が漏れる漏斗アルゴリズム。リクエストごとにリクエストを追加する必要があり、バケツがいっぱいになるとリクエストは拒否される。
これらのアルゴリズムは組み合わせて使用し、さまざまなシナリオのニーズを満たすことができます。