1

私はこのテストコードを持っています:

import redis
r = redis.Redis()
response = r.blpop('testkey', timeout=1)
print response

複数回実行すると、常に 1 秒よりもかなり長く、通常は 2 秒近くかかります。私の redis サーバーはローカルであるため、遅延は発生しません。Redis はタイムアウトの時間を正確に計っていませんか、それとも python クライアントが行っていることですか?

ありがとう

4

1 に答える 1

0

プログラムでは、blpop タイムアウトに加えて、Python エンジンの起動時間、パッケージのインポート、Redis への接続の確立も考慮する必要があります。

さらに、タイムアウトを設定しても、最大待機時間は保証されません。ポップするものが何もない場合の最小待機時間を保証しますが、これは異なります。

blpop の場合、タイムアウトはクライアント側ではなくサーバー側で管理されることに注意してください。サーバーは、numclients/(hz*10) クライアントを毎秒 hz 回チェックする遅延アルゴリズムを使用してこれを行います。Hz は調整可能な Redis パラメーターです。

于 2013-06-04T06:40:29.997 に答える