0

を使用して接続プールを書き込もうとしていますhiredis。私が直面している問題は、ユーザーがコマンドを起動して接続からの応答を読み取らなかった場合、接続プールに入れる前にその接続からの応答をクリアする必要があることです。

確認する方法はありますか:

  1. 読み取るデータは他にありますか? だから私はredisGetReply、すべてのデータがクリアされるまで、行うことができます.
  2. または、接続オブジェクトで保留中のすべての読み取りをクリアする方法はありますか?
4

1 に答える 1

0

同期または非同期操作を使用しているかどうかを述べていないため、質問は明確ではありません。

  • あなたはredisGetReplyに言及していますが、同期操作の使用を想定しています。同期呼び出しは呼び出しをブロックします。コマンドへの応答は、同じ呼び出しで利用できます。すべてのデータが読み取られたかどうかを確認する必要があるシナリオは、コンテキストがスレッド間で共有され、プールに接続を返す前にデータを確認する場合です。

    はい、redisGetReply を使用して、読み取るデータが他にあるかどうかを確認できます。

    非同期呼び出しの場合、redisAsyncHandleRead を使用して、読み取るデータがあるかどうかを確認します。

内部的には、redisGetReply と redisAsyncHandleRead の両方が redisBufferRead を呼び出します。

  • 同期呼び出しの場合、redisFree を使用してコンテキストをクリアします。Aysnc 呼び出しの場合、redisAsyncFree を使用してコンテキストをクリアします。
于 2013-11-20T06:41:41.150 に答える