アクセス回数を制限する

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 アクセス回数が制限を超えておりアクセス不可。

bannerAds