アクセス回数を制限する
Redisのアクセス制限をIPごとに設定するには、INCRコマンドとEXPIREコマンドを組み合わせた Luaスクリプトを使用します。
まず、Luaスクリプトを作成してIPアクセス回数制限のロジックを実装する:
local ip = KEYS[1]
local limit = tonumber(ARGV[1])
local count = tonumber(redis.call("GET", ip) or "0")
if count + 1 > limit then
return 0
else
redis.call("INCR", ip)
redis.call("EXPIRE", ip, 60) -- 设置访问次数的过期时间为60秒
return 1
end
その後、Redis で上記の Lua スクリプトを実行し、IPアドレスとアクセス制限回数を渡します。
EVAL "lua脚本" 1 "IP地址" "访问次数限制"
例えば、IPアドレス127.0.0.1からのアクセスを1分間あたり10回までに制限する場合は、以下のコマンドを実行します。
EVAL "lua脚本" 1 "127.0.0.1" 10
返り値が 1 の場合、IP アクセス回数が制限を超えておらずアクセスを継続できます。返り値が 0 の場合、IP アクセス回数が制限を超えておりアクセス不可。