gpt4 book ai didi

lua - Redis并发访问简单Ip控制

转载 作者:IT王子 更新时间:2023-10-29 06:13:12 25 4
gpt4 key购买 nike

我需要定义一个地方来记录/验证任何 Ip 的访问次数。如果任何 Ip 的数量大于每分钟十次 Ip 请求将被拒绝。

创建此脚本是为了能够验证此条件。如果 ip 不存在,Lua 脚本将在 60 秒 TTLL ​​内为这个 ip 创建新的计数器。如果它存在,它将增加它,并验证该 ip 的计数器是否大于 10。

键[1]==163.2.2.2

 if redis.call("EXISTS",KEYS[1]) == 1 then
local ocurrences=redis.call("INCR",KEYS[1])
if ocurrences>10 then
return true
else
return false
end
else
redis.call("SETEX",KEYS[1],60,1)
return false
end

它工作正常,但 Lua 脚本或 Lua 上的事务阻止 Redis 能够验证乐观锁定。在不阻塞 Redis 而不会出现读/写访问竞争问题的情况下,使用 Redis 执行此操作的最佳方法是什么?

最佳答案

在 Redis 中,(几乎)所有命令都会阻塞服务器,包括 Lua 脚本评估。也就是说,请记住,您的服务器仍然可以在确保隔离的同时满足大量请求。

Lua 脚本不需要乐观,只要它们足够简单——就像你的一样——就是一个不错的选择。 IMO 此脚本将按照基本速率限制的目的执行。

关于lua - Redis并发访问简单Ip控制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48287073/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com