使用Redis限速?

时间:2015-06-03 13:28:03

标签: redis

有多个用户使用的API,是否可以使用Redis实现速率限制?

知道如何针对两种略有不同的情况进行操作会很有趣:

  • 同一用户每秒不超过X个请求。
  • 不超过同一用户的X个并发请求。

API实现为在多个服务器上运行的无状态ruby进程。

2 个答案:

答案 0 :(得分:3)

你可以看看rack-attack gem。它可以使用Redis来获取有关限制请求的商店信息。

答案 1 :(得分:1)

我知道这不是Ruby,但我使用ioredis实现了速率限制器,Redis命令很容易转移。 Ioredis是Node.js的包装器,但redis调用是相同的。

Here's a gist of rolling window and lockout-style rate limiters

对于你问题的第二部分,我不确定你的并发请求是什么意思?根据定义,请求不是瞬态和顺序的吗?你的意思是并发连接?例如,用户一次连接的设备数量是多少?在这种情况下,您只需要跟踪数字连接(不需要计时器)。