Redis 速率限制器使用 Redis List

问题描述

我正在浏览定义在:https://redis.io/commands/incr 和“模式:速率限制器 2”部分下的 Redis 速率限制器模式,它具有以下片段:-

FUNCTION LIMIT_API_CALL(ip)
current = LLEN(ip)
IF current > 10 THEN
    ERROR "too many requests per second"
ELSE
    IF EXISTS(ip) == FALSE
        MULTI
            RPUSH(ip,ip)
            EXPIRE(ip,1)
        EXEC
    ELSE
        RPUSHX(ip,ip)
    END
    PERFORM_API_CALL()
END 

进一步说明:

实现更复杂,使用更高级的功能,但具有记住当前执行 API 调用的客户端的 IP 地址的优势,这取决于应用程序是否有用。

我无法通过为每个 ip 存储列表 ip 地址来获得它有什么优势?普通计数器而不是列表会给出相同的东西?我可以为每个 ip 设置一个计数器,它可以做同样的事情。该列表只是一遍又一遍地存储相同的 ip,这似乎有点矫枉过正。我错过了什么吗?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)