gpt4 book ai didi

asynchronous - hiredis 从异步上下文运行同步命令

转载 作者:可可西里 更新时间:2023-11-01 11:38:34 27 4
gpt4 key购买 nike

我正在使用 hiredis C client library在异步上下文中与 Redis 交互。

在我的工作流程的某些点上,我必须对 Redis 进行同步调用,但我无法从 Redis 获得成功响应。

我不确定我是否可以从异步上下文向 Redis 发出同步命令但是...

我有这样的东西

redisAsyncContext * redis_ctx;
redisReply * reply;

// ...

reply = redisCommand(&(redis_ctx->c), COMMAND);

redisCommand 调用后,我的 reply is NULL what is documented as an error condition我的 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

我不知道命令是否发出。

最佳答案

希望还不算太晚。我不是 Redis 专家,但如果您需要对 Redis 进行同步调用,为什么要使用 AsyncContext?

如果您只是将 redisCommand 与 redisContext 一起使用,一切都应该没问题。

假设变量 ctx 已被声明为

redisContext *ctx;

您可以像这样使用 redisCommand:

reply = (redisReply *)redisCommand(ctx, "HGET %s %s", hash, key);

关于asynchronous - hiredis 从异步上下文运行同步命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27510107/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com