有多个用户使用的API,是否可以使用Redis实现速率限制?
知道如何针对两种略有不同的情况进行操作会很有趣:
API实现为在多个服务器上运行的无状态ruby进程。
答案 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
对于你问题的第二部分,我不确定你的并发请求是什么意思?根据定义,请求不是瞬态和顺序的吗?你的意思是并发连接?例如,用户一次连接的设备数量是多少?在这种情况下,您只需要跟踪数字连接(不需要计时器)。