我正在使用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);
}
答案 0 :(得分:2)
我怀疑KEYS
表的值未设置;表格为空或其值为nil
,您会收到运行时错误。设置KEYS [变量]的内容是什么?如果用'foo'替换它会怎么样(如“redis.call('SET','foo','variable')”)?你得到关键'foo'设置了吗?
根据这个Intro for Redis programmers,当你使用redis-cli
命令运行脚本时,你会得到KEYS(你传递了键数,然后是键本身)。请注意,它将是一个普通的Lua表,所以你的循环应该从1开始,而不是0.如果那不是你的情况,那么你不需要使用KEYS表,需要使用不同的表,因为KEYS赢了'为你填充。