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__メソッドを実装しています。そのコマンドの長さを取得します。これは、すべてのコマンドを記録します。

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

関連する問題