–获取cookie
local clientip = ngx.var.remote_addr
–设置redis的key过期时间
local ip_time_out = 60
–设置单位时间内的频率
local ip_max_count = 6
–连接redis
local redis = require “resty.redis”
local conn = redis:new()
ok, err = conn:connect(“127.0.0.1”,6379)
conn:auth(123456)
conn:select(6)
conn:set_timeout(2000)
–测试reds连接是否成功
if not ok then
goto FLAG
end
–获取单位时间内IP的访问次数
ip_count, err = conn:get("-COUNT-"…clientip)
–判断IP是否为空,如为空,则redis存入该IP
if ip_count == ngx.null then
res, err = conn:set("-COUNT-"…clientip, 1)
res, err = conn:expire("-COUNT-"…clientip, ip_time_out)
else
– 判断IP访问是否大于设定的频率
if tonumber(ip_count) >= ip_max_count then
– 大于设定频率则写入list
res, err = conn:rpush(‘test’, clientip)
else
– IP次数加1。
res, err = conn:incr("-COUNT-"…clientip)
end
end
–关闭redis连接
::FLAG::
local ok, err = conn:close()
~




