1.通过redis客户端加载lua文件到redis缓存中,缓存长期有效;可以通过script flush清除lua脚本
加载lua脚本到redis缓存中
D:\phpstudy_pro\Extensions\redis3.0.504>redis-cli.exe -x script load < index.lua
加载之后生成的key:"c714328af6b5cecf33f947f1c08a3b5027caee07"
2.通过evelsha 命令运行脚本并且传递上一步的key
$redis->evalsha('c714328af6b5cecf33f947f1c08a3b5027caee07',key的数量,key的值,val的值)
3.如限制每个ip请求的次数
index.lua脚本
-- 变量递增
local visitNum = redis.call('incr',KEYS[1])
-- 如果为第一次递增,设置一个过期时间
if visitNum == 1 then
redis.call('expire',KEYS[1],ARGV[1])
end
-- 如果变量未过期之前,递增的次数大于最大值,则返回0
if visitNum > tonumber(ARGV[2]) then
return 0
end
-- 返回1,可以正常访问
return 1