gpt4 book ai didi

redis - 如何每天在lua中过期一组redis?

转载 作者:可可西里 更新时间:2023-11-01 11:14:34 26 4
gpt4 key购买 nike

我正在禁止蜘蛛在 openresty(1.13.6.2) 中使用 lua 脚本。它将探测非法 ip 并添加到黑名单。

res , err = cache:sadd('black-list', ngx.var.remote_addr)

现在我想让黑名单每天12:00过期(解除封禁ip)。如何过期设置每日?正确的做法是什么?这是禁止禁止的代码:

is_black ,err = cache:sismember('black_list', ngx.var.remote_addr)
if is_black == 1 then
ngx.exit(ngx.HTTP_FORBIDDEN)
goto label
end

最佳答案

作为替代方案:您可以使用 string redis 数据类型来保存 IP 而不是 set(为了方便搜索,您可以使用 key 中的一些公共(public)部分,例如example black_list;redis key可以用分号分隔):

# redis cli commands
set black_list:127.0.0.1 127.0.0.1 EX 3600 # expires in 1 hour
set black_list:127.0.0.2 127.0.0.2 EX 60 # expires in 1 minute
set black_list:127.0.0.3 127.0.0.3 EX 60 # expires in 1 minute

在这种情况下,您可以计算(12:00 - 现在)并为每个 IP 记录设置 TTL(生存时间),它们将在需要时自动过期没有任何额外代码操作的时间。

关于redis - 如何每天在lua中过期一组redis?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55480431/

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