并发访问频率控制
有两种实现这种访问频率控制的方法:
- 根据控制规则,设定单位时间的原子计数器
- "滑动窗口"的概念,保持一个长度为访问频率阈值的队列
例如要限制每分钟每个用户最多只能访问100次页面,使用方法1的伪代码如下:
$isKeyExists = EXISTS rate.limiting:$ip
if isKeyExists is 1
$times = INCR rate.limiting:$ip
if $times > 100
print "访问频率超限"
exit
else
MULTI
INCR rate.limiting:$ip
EXPIRE $keyname, 60
EXEC
方法2通过使用集合数据类型实现。