我有这个测试代码:
import redis
r = redis.Redis()
response = r.blpop('testkey', timeout=1)
print response
多次运行,这通常需要大于1秒,通常接近2秒。我的redis服务器是本地服务器,所以延迟不应该进入它。 Redis不能准确计算超时时间,还是python客户端正在做什么?
由于
答案 0 :(得分:0)
好吧,使用你的程序,在blpop超时的基础上,你还必须考虑Python引擎的启动时间,包的导入,建立与Redis的连接。
此外,设置超时并不能保证最长等待时间。当没有任何东西可以弹出时,它保证了最短的等待时间,这是不同的。
请注意,对于blpop,超时是在服务器端管理,而不是在客户端管理。服务器使用惰性算法来执行它,该算法每秒hz次检查numclients /(hz * 10)个客户端。 Hz是您可以调整的Redis参数。