我正在尝试使用hiredis
编写连接池。
我面临的问题是,如果用户触发命令并且没有从连接中读取响应,我应该在放入连接池之前清除该连接的响应。
有没有办法检查:
redisGetReply
,直到所有数据都被清除。 答案 0 :(得分:0)
问题不明确,因为它未能说明您是使用同步还是异步操作。
你提到redisGetReply,我会假设使用同步操作。同步通话将阻止通话。对命令的响应将在同一个调用中可用。您可能想要检查是否读取所有数据的方案是在线程之间共享上下文并在返回到池的连接之前检查数据。
是的redisGetReply可用于检查是否有更多数据需要阅读。
对于异步调用,请使用redisAsyncHandleRead检查是否有要读取的数据。
redisGetReply和redisAsyncHandleRead都在内部调用redisBufferRead。