Redis-Lua 数组键为字符串

我在 Redis 中执行 Lua。我遇到了一个问题,就是我无法使用字符串作为数组键。 我的代码如下,我们发现 mytable["wow"] 被舍弃了:

文件名:hget.lua

local mytable = {}
mytable[1]= "Lua"
mytable["wow"] = "教程"
return mytable

命令:redis-cli --eval hget.lua

返回的结果为:

1) "Lua"
点赞
用户5384363
用户5384363

如果你想将表格返回到 Redis,就不能将字符串用作表格的键。

Redis将返回的表格作为数组处理,其索引从“1”开始。 Redis会丢弃表格中键不是整数的其他元素。 在你的情况下,即mytable["wow"] = "Tutorial",因为键是字符串,Redis会忽略此元素。

此外,索引必须是连续的,否则Redis会丢弃一些元素。 以以下代码为例:

local t = {}
t[1] = "1"    -- OK
t[2] = "2"    -- OK
t[4] = "4"    -- 由于缺少索引3,此元素将被丢弃
t["string_key"] = "value"   -- 由于键是字符串,此元素将被丢弃

return t

结果输出:

./redis-cli --eval t.lua
1) "1"
2) "2"
2016-10-21 03:47:08