hiredis C client library을 사용하여 비동기 컨텍스트에서 Redis와 상호 작용합니다.비동기 컨텍스트에서 hiredis sync 명령을 실행하십시오.
내 작업 흐름 중 일부에서 Redis에 대한 동기화 호출을해야하지만 Redis에서 성공적인 응답을받을 수 없습니다.
나는, 내 reply
is NULL what is documented as an error condition 내가 문제 비동기 컨텍스트 만에서 레디 스에 동기화 명령 ...
내가이
redisAsyncContext * redis_ctx;
redisReply * reply;
// ...
reply = redisCommand(&(redis_ctx->c), COMMAND);
redisCommand
후 전화처럼 뭔가를 할 수 있는지 여부를 확실하지 않다 내 redis_ctx->c
은 다음과 같습니다.
err = 0
errstr = '\000' <repeats 127 times>
fd = 11
flags = 2
obuf = "*5\r\n$4\r\nEVAL\r\n$215\r\n\"math.randomseed(tonumber(ARGV[1])) local keys = redis.call('hkeys',KEYS[1]) if #keys == 0 then return nil end local key = keys[math.random(#keys)] local value = redis.call('hget', KEYS[1], key) return {key, value}\"\r\n$1\r\n1\r\n$0\r\n\r\n$1\r\n1\r\n"
reader = 0x943730
나는 그 명령은 발행되었거나 발행되지 않았다.
redisAsyncContext' (async)를 실행 한 후'redisCommand' (sync)를 실행합니다. – PauloASilva
'redisAsyncInitialize'를 사용해 보셨습니까? 이것이 당신이하려는 일에 유용 할 지 모르겠습니다. 출처 : [link] (https://github.com/redis/hiredis/blob/master/async.c) –
모든 것이 비동기 컨텍스트/명령에 대해 완벽하게 작동하지만 내 워크 플로의 어느 시점에서 문제를보고 싶습니다. sync 명령을 사용하면 AsyncContext 구조체에서 사용할 수있는 redis sync 컨텍스트가 필요합니다. 비동기 컨텍스트에서 동기화 컨텍스트를 가져올 수 있다면 다른 컨텍스트를 선언하지 않아도됩니다. – PauloASilva