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

时间:2014-02-24 21:08:57

标签: lua redis

我正在使用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);
}

1 个答案:

答案 0 :(得分:2)

我怀疑KEYS表的值未设置;表格为空或其值为nil,您会收到运行时错误。设置KEYS [变量]的内容是什么?如果用'foo'替换它会怎么样(如“redis.call('SET','foo','variable')”)?你得到关键'foo'设置了吗?

根据这个Intro for Redis programmers,当你使用redis-cli命令运行脚本时,你会得到KEYS(你传递了键数,然后是键本身)。请注意,它将是一个普通的Lua表,所以你的循环应该从1开始,而不是0.如果那不是你的情况,那么你不需要使用KEYS表,需要使用不同的表,因为KEYS赢了'为你填充。