2013-07-13 3 views
0

hiredis을 사용하여 연결 풀을 쓰려고합니다. 문제점 사용자가 명령을 실행했지만 연결에서 응답을 읽지 않은 경우 연결 풀에 넣기 전에 해당 연결의 응답을 지워야합니다.hiredis, 더 많은 데이터를 읽을 수 있는지 확인하는 방법

  1. 읽을 데이터가 더 :

    확인하는 방법은 없나요? 따라서 모든 데이터가 지워질 때까지 redisGetReply을 할 수 있습니다.

  2. 또는 연결 개체에 대해 보류중인 모든 읽음을 지울 수있는 방법이 있습니까?

답변

0

질문이 명확하지 않습니다. 동기화 또는 비동기 작업 중 어느 것을 사용하는지 여부를 알 수 없으므로 분명하지 않습니다. 당신은 redisGetReply을 언급

  • , 나는 동기화 작업을 사용한다고 가정합니다. 동기화 통화는 통화를 차단합니다. 명령에 대한 응답은 동일한 호출에서 사용할 수 있습니다. 모든 데이터를 읽을 수 있는지 확인하려는 경우는 스레드간에 컨텍스트를 공유하고 풀에 연결을 반환하기 전에 데이터를 확인하는 경우입니다.

    예 redisGetReply를 사용하여 읽을 데이터가 더 있는지 확인할 수 있습니다.

    비동기 호출의 경우 redisAsyncHandleRead를 사용하여 읽을 데이터가 있는지 확인하십시오.

내부적으로 redisGetReply 및 redisAsyncHandleRead 모두 redisBufferRead에 전화를 걸.

  • 동기화 호출의 경우 redisFree를 사용하여 컨텍스트를 지 웁니다. Aysnc 호출의 경우 redisAsyncFree를 사용하여 컨텍스트를 지 웁니다.