2014-02-24 69 views
1

我正在使用C#和名爲ServiceStack Redis的Redis客戶端。我想使用Lua腳本將密鑰添加到Redis。目前我使用循環來測試,但沒有添加任何按鍵。我究竟做錯了什麼?見下面的代碼。如何使用Lua和ServiceStack Redis向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); 
} 

回答

2

我懷疑KEYS表的值沒有設置;該表爲空或其值爲nil,並且您會收到運行時錯誤。什麼設置KEYS [變量]的內容?如果你用'foo'代替它(如「redis.call('SET','foo','variable')」)?你有關鍵'富'集?

根據此Intro for Redis programmers,當您使用redis-cli命令(您傳遞密鑰數量,然後按鍵本身)運行腳本時,會得到KEYS填充。請注意,這將是一個普通的Lua表,所以你的循環應該從1開始,而不是從0開始。如果這不是你的情況,那麼你不需要使用KEYS表,並且需要使用不同的表,不要爲你填充。

+0

它適用於redis.call('SET','foo','variable')。但我以這種方式閱讀的內容是不允許的。您必須使用KEYS表。你知道如何做到這一點? – Thomas

+0

更新了關於KEYS詳情的答案。 –