Redis - Lua tables as return values - why is this not working -



Redis - Lua tables as return values - why is this not working -

when run code through redis eval homecoming no results. thought why not working?

redis-cli eval "$(cat bug.lua)" 0 bug.lua local retv = {} retv["test"] = 1000 homecoming retv

if initialize table value lone gets printed.

$ cat bug.lua --!/usr/bin/env lua local retv = {"this", "is", "a", "bug" } retv["test"] = 1000 homecoming retv $ redis-cli eval "$(cat bug.lua)" 2 b 1) "this" 2) "is" 3) "a" 4) "bug"

if refer redis eval documentation can see rules redis uses convert lua table redis reply:

lua table (array) -> redis multi mass reply (truncated first nil within lua array if any) lua table single ok field -> redis status reply lua table single err field -> redis error reply

so except special cases 2 , 3, redis assumes table sequence (i.e list) means reads retv[1], retv[2], ... until encounters nil element (here corresponding source code section).

this explains why retv["test"] ignored in case.

if alter code with:

local retv = {"this", "is", "a", "bug" } retv[5] = 1000 homecoming retv

then additional element gets returned:

1) "this" 2) "is" 3) "a" 4) "bug" 5) (integer) 1000

lua redis lua-table

Comments

Popular posts from this blog

model view controller - MVC Rails Planning -

ruby on rails - Devise Logout Error in RoR -

html - Submenu setup with jquery and effect 'fold' -