hiredis,如何检查是否有更多数据可供读取

hiredis , How to check if more data is available to read

本文关键字:多数据 读取 是否 何检查 检查 hiredis      更新时间:2023-10-16

我正在尝试使用hiredis写入连接池。我面临的问题是,如果用户触发了一个命令,但没有从连接中读取响应,我应该在将响应放入连接池之前清除该连接中的响应。

有什么方法可以检查吗:

  1. 还有更多的数据要读吗?所以我可以做redisGetReply,直到所有数据都被清除
  2. 或者有没有一种方法可以清除连接对象上所有挂起的读取

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

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

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

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

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

  • 对于同步调用,请使用redisFree清除上下文。对于Aysnc调用,请使用redisAsyncFree来清除上下文