2014-02-24 3 views
1

저는 C#과 ServiceStack Redis라는 Redis 클라이언트를 사용하고 있습니다. 루아 스크립트를 사용하여 레디 스에 키를 추가하고 싶습니다. 현재 루프를 사용하여이를 테스트하지만 키가 추가되지 않았습니다. 내가 도대체 ​​뭘 잘못하고있는 겁니까? 아래 코드를 참조하십시오.Lua 및 ServiceStack Redis를 사용하여 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')")? 'foo'키를 가져 왔니?

Intro for Redis programmers에 따르면 redis-cli 명령을 사용하여 스크립트를 실행할 때 KEYS가 채워집니다 (키의 수와 키 자체를 전달). 루프가 정상적인 Lua 테이블이 될 것이므로 루프는 0이 아닌 1에서부터 시작해야합니다. 그런 경우가 아니라면 KEYS 테이블을 사용할 필요가 없으며 KEYS가 ' 당신을 위해 채워지십시오.

+0

redis.call ('SET', 'foo', 'variable')과 함께 작동합니다. 하지만 내가 읽은 방식은 허용되지 않습니다. KEYS 테이블을 사용해야합니다. 그 일을 성취하는 방법을 알고 있습니까? – Thomas

+0

답변을 KEYS의 세부 정보로 업데이트했습니다. –

관련 문제