在 redis 滑动 window 速率限制器实现中重命名此键的目的是什么?
What is the purpose of renaming this key in a redis sliding window rate limiter implementation?
我正在查看第 11 行 redis-rate-limiter
library here 的源代码。
通过 exec
,使用“10/分钟”rate/duration:
- 创建前缀为 0 的临时密钥
ratelimittemp:ID
并设置为 60 秒后过期
- 重命名为
ratelimit:ID
- 递增
ratelimit:ID
- 获取 TTL
在这里重命名有什么意义?
这是一种刷新速率限制器计数器的方法。如果真实密钥不存在,它将临时密钥重命名为真实密钥,即 renamenx
.
如果真实密钥存在,则增加当前计数器,看是否达到当前时间的速率限制window。但是,如果真实密钥不存在,则表示上一次window,例如1分钟,已经过去了,我们需要开始新的时间window,即新的计时。所以我们将临时密钥(时间window作为过期时间)重命名为真实密钥,并在这个新的真实密钥上增加。
我正在查看第 11 行 redis-rate-limiter
library here 的源代码。
通过 exec
,使用“10/分钟”rate/duration:
- 创建前缀为 0 的临时密钥
ratelimittemp:ID
并设置为 60 秒后过期 - 重命名为
ratelimit:ID
- 递增
ratelimit:ID
- 获取 TTL
在这里重命名有什么意义?
这是一种刷新速率限制器计数器的方法。如果真实密钥不存在,它将临时密钥重命名为真实密钥,即 renamenx
.
如果真实密钥存在,则增加当前计数器,看是否达到当前时间的速率限制window。但是,如果真实密钥不存在,则表示上一次window,例如1分钟,已经过去了,我们需要开始新的时间window,即新的计时。所以我们将临时密钥(时间window作为过期时间)重命名为真实密钥,并在这个新的真实密钥上增加。