2013-06-18 82 views
0

我試圖在Redis的運行下面的Lua中:錯誤LUA-redis的腳本

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 

,但我得到這個錯誤:

Error compiling script (new function): user_script:20: '' expected near 'end'

我試圖移動爲此,表格,但我不能得到它的工作,對不起,如果這是一個愚蠢的問題,我真的在這個盧阿事情新!

+3

你有一個額外的'結束' – karthikr

回答

1

工作:

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說,你必須在最後一個額外的結束。