2017-09-05 2 views
1

저는 pyredis에서 Redis 파이프 라인 (개별 작업의 소켓 I/O 비용을 줄이기 위해 대량으로 실행되는 작업 집합)을 사용했습니다.Redis 파이프 라인에서 작업 수 결정

때로는 내 파이프 라인이 너무 커져 RAM이 너무 많이 축적되므로 주어진 파이프 라인에 N 개의 작업이 누적되면 파이프 라인에 저장된 작업을 실행하려면 pipeline.execute() 메서드를 실행하고 싶습니다.

이렇게하면 다음과 같은 질문이 제기됩니다. Redis 파이프 라인의 작업 수를 어떻게 측정 할 수 있습니까? 카운터 변수를 저장할 수는 있지만 파이프 라인을 쿼리하여 그 안에 얼마나 많은 연산이 있는지 파악하는 것을 선호합니다. 다른 사람들이이 질문에 제공 할 수있는 도움은 매우 도움이 될 것입니다!

답변

3

예, 조작 수를 얻으려면 len(pipeline)을 사용할 수 있습니다. redis-py/client.py에는 클래스 BasePipeline의 정의가 있으며 __len__ 메서드를 구현합니다. 즉, 모든 명령이 파이프 된 command_stack의 길이를 가져옵니다.

def __len__(self): 
    return len(self.command_stack) 

예 :

>>> import redis 
>>> redis = redis.StrictRedis() 
>>> p = redis.pipeline() 
>>> len(p) 
0 
>>> p.set('test',1) 
StrictPipeline<ConnectionPool<Connection<host=localhost,port=6379,db=0>>> 
>>> len(p) 
1 
+0

감사합니다. @GuangshengZuo! – duhaime