如何使用Lua和ServiceStack Redis向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);
}
点赞
用户1442917
用户1442917

我怀疑KEYS表的值未被设置;可能是表为空,或者它的值为nil,你会得到一个运行时错误。是什么设置了KEYS[variable]的内容?如果你用'foo'(例如 "redis.call('SET', 'foo', 'variable') ")来替换它会怎样?你会设置键'foo'吗?

根据这篇Redis程序员的介绍,当你使用redis-cli命令(你传递键的数量以及键本身)运行脚本时,你会获得一个填充了键的KEYS。注意,它将是一个普通的Lua表,所以你的循环应该从1开始,而不是0。如果不是这种情况,那么你就不需要使用KEYS表,而需要使用另一个表,因为KEYS不会为你填充。

2014-02-25 02:08:41