2014-04-16 3 views
1

몇 가지 키가 실시간 값으로 설정되어 있습니다. 파이프 라인이 훨씬 빠르다고하므로, 실제로 실행하는 것이 적당합니다.실시간으로 적합한 Redis 파이프 라인이 설정 되나요?

r= redis.StrictRedis() 
pipe = r.pipeline() 
for i in range(100000): 
    pipe.set(i, i+1).execute() 

매초마다 값이 변경되는 lakh 키가 있습니다. execute()를 실행해야합니다. 왜냐하면 실시간으로 데이터를 병렬로 검색 할 것이기 때문입니다.

성능 및 CPU 부하 측면에서 파이프 라인을 사용하는 것이 적합합니까?

답변

1

각 반복마다 execute가 호출됩니다. 따라서 파이프 라인을 전혀 사용하지 않고 오버 헤드 만 추가합니다.

5000 개의 항목 (예)에 대해 번들 된 execute()를 일괄 처리하는 경우 적합하고 매우 빠릅니다.

StrictRedis.pipeline은 실제 파이프 라인이 아닙니다. execute()에서 서버 측 파이프 라인 인터페이스를 사용하는 클라이언트 측 큐입니다. 관심이 있으시면 here을 참조하십시오.

희망 하시겠습니까? TW

+0

동의합니다. 따라서 파이프 라인은 일괄 처리 실행에 적합하며 스트리밍 데이터에는 적합하지 않습니다. – user3446151

+0

예, 현재 redis-py 파이프 라인 구현에서는 빠른 일괄 처리는 있지만 스트리밍은 수행하지 않습니다. 다른 redis-client 구현은 진정한 스트리밍을 제공 할 수 있지만, 아직 파이썬에는 존재하지 않습니다. –

관련 문제