0

我正在尝试使用hiredis. 我面临的问题是,如果用户触发命令并且没有读取来自连接的响应,我应该在放入连接池之前清除来自该连接的响应。

有什么方法可以检查:

  1. 是否有更多数据要读取?所以我可以做到redisGetReply,直到所有数据都被清除。
  2. 或者有没有办法清除连接对象上的所有未决读取?
4

1 回答 1

0

问题不清楚,因为它无法说明您使用的是同步还是异步操作。

  • 你提到redisGetReply,我会假设使用同步操作。同步呼叫将阻塞呼叫。对命令的响应将在同一个调用中可用。您可能想要检查是否读取了所有数据的场景是在线程之间共享上下文并且您在将连接返回到池之前检查数据。

    是的 redisGetReply 可用于检查是否有更多数据要读取。

    对于异步调用,使用 redisAsyncHandleRead 检查是否有要读取的数据。

redisGetReply 和 redisAsyncHandleRead 在内部都会调用 redisBufferRead。

  • 对于同步调用,使用 redisFree 来清除上下文。对于 Aysnc 调用,使用 redisAsyncFree 来清除上下文。
于 2013-11-20T06:41:41.150 回答