并发访问频率控制

有两种实现这种访问频率控制的方法:

  1. 根据控制规则,设定单位时间的原子计数器
  2. "滑动窗口"的概念,保持一个长度为访问频率阈值的队列

例如要限制每分钟每个用户最多只能访问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通过使用集合数据类型实现。