我正在尝试在redis中运行以下lua脚本:
for j=0,5000 do
local i=redis.pcall('incr', 'SS:'..ARGV[2])%5000
if redis.pcall('sismember', 'S:', i)==0 then
if i > 4999 then
redis.pcall('set', "SS:"..ARGV[2], 1)
i = 1
end
end
if redis.pcall('get', 'SS:'..ARGV[2])>4 then
return 'forbiden'
end
redis.pcall('incr', 'C:'..ARGV[1])
redis.pcall('sadd', 'US:'..ARGV[2], ARGV[1]..':'..i)
redis.pcall('sadd', 'U:'..ARGV[1], ARGV[2]..':'..i)
redis.pcall('sadd', 'S:'..ARGV[2], i)
return i
end
end
return false
但是我收到了这个错误:
编译脚本时出错(新功能):user_script:20:''预计在'结束'附近
我正在尝试移动这一端,制表,但我不能让它工作,对不起,如果这是一个愚蠢的问题,我真的很新的这个lua事情!
答案 0 :(得分:2)
工作:
for j=0,5000 do
local i=redis.pcall('incr', 'SS:'..ARGV[2])%5000
if redis.pcall('sismember', 'S:', i)==0 then
if i > 4999 then
redis.pcall('set', "SS:"..ARGV[2], 1)
i = 1
end
end
if redis.pcall('get', 'SS:'..ARGV[2])>4 then
return 'forbiden'
end
redis.pcall('incr', 'C:'..ARGV[1])
redis.pcall('sadd', 'US:'..ARGV[2], ARGV[1]..':'..i)
redis.pcall('sadd', 'U:'..ARGV[1], ARGV[2]..':'..i)
redis.pcall('sadd', 'S:'..ARGV[2], i)
return i
end
return false
正如@karthikr所说,你最后还有一个额外的结局。