为什么 Flask 限速解决方案使用 Redis?

Why do Flask rate limiting solutions use Redis?

我想限制我的 Flask API。我找到了 2 个解决方案。

  1. Flask-Limiter 扩展。
  2. 来自使用 Redis 的 Flask 网站的片段:http://flask.pocoo.org/snippets/70/

Flask-Limiter在没有Redis的情况下可以根据远程地址对请求进行限速,Redis有什么意义?

Redis 允许您将限速状态存储在持久存储中。

这意味着您可以:

  1. 重新启动您的网络服务器或网络应用程序,但速率限制仍然有效。您不会因为工作进程被破坏而创建新进程而丢失最后一次请求的记录。
  2. 使用多个网络服务器或网络应用程序。这是因为限速状态存储在外部数据存储中,这也解决了共享数据同步和数据竞争的问题。您可以 运行 任意数量的 Web 服务器 - 所有服务器共享速率限制。
  3. 查看限速状态。 Redis 提供简单的 CLI 工具,允许您以临时方式查看当前的活动数据,甚至可以监控传入的命令和请求。
  4. 让 Redis 为限速算法管理 TTL、LRU 等。 Redis 本质上支持这一点。