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,超时是在服务器端而非客户端进行管理的。服务器使用惰性算法执行此操作,该算法每秒每 hz 次检查 numclients/(hz*10) 个客户端。Hz 是您可以调整的 Redis 参数。

于 2013-06-04T06:40:29.997 回答