如何使用Lua和ServiceStack Redis向Redis添加密钥

如何使用Lua和ServiceStack Redis向Redis添加密钥,lua,redis,Lua,Redis,我正在使用C#和名为ServiceStack Redis的Redis客户端。我想使用Lua脚本向Redis添加键。目前我使用一个循环来测试这一点,但没有添加任何键。我做错了什么?请参阅下面的代码 using (var redisClient = GetPooledRedisClient()) { StringBuilder luaScript = new StringBuilder(); luaScript.AppendLine("for variable = 0, 10, 1

我正在使用C#和名为ServiceStack Redis的Redis客户端。我想使用Lua脚本向Redis添加键。目前我使用一个循环来测试这一点,但没有添加任何键。我做错了什么?请参阅下面的代码

using (var redisClient = GetPooledRedisClient())
{
    StringBuilder luaScript = new StringBuilder();
    luaScript.AppendLine("for variable = 0, 10, 1 do");
    luaScript.AppendLine("  redis.call('SET', KEYS[variable], 'variable')");
    luaScript.AppendLine("end");

    var sha1 = redisClient.LoadLuaScript(luaScript.ToString());
    return redisClient.ExecLuaShaAsString(sha1);
}

我怀疑
表的值未设置;表为空或其值为
nil
,则会出现运行时错误。什么设置键[变量]的内容?如果将其替换为“foo”(如在“redis.call('SET'、'foo'、'variable'))中)会怎么样?你有钥匙“foo”吗


根据这一点,当您使用
redis cli
命令运行脚本时,您会得到填充的密钥(您先传递密钥数,然后传递密钥本身)。注意,它将是一个普通的Lua表,因此循环应该从1开始,而不是从0开始。如果不是这样,则不需要使用KEYS表,也需要使用其他表,因为不会为您填充键。

它适用于redis.call('SET','foo','variable')。但我这样读是不允许的。您必须使用密钥表。你知道如何做到这一点吗?更新了答案,并提供了有关键的详细信息。