Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我有这个测试代码:
import redis r = redis.Redis() response = r.blpop('testkey', timeout=1) print response
运行多次,这总是花费比 1 秒更长的时间,通常接近 2 秒。我的 redis 服务器是本地的,所以不应该有延迟。Redis 没有准确计时超时,还是 python 客户端正在做的事情?
谢谢
好吧,对于您的程序,除了 blpop 超时之外,您还必须考虑 Python 引擎的启动时间、包的导入、与 Redis 的连接的建立。
此外,设置超时并不能保证最大等待时间。它保证了在没有任何东西可以弹出时的最短等待时间,这是不同的。
请注意,对于 blpop,超时是在服务器端而非客户端进行管理的。服务器使用惰性算法执行此操作,该算法每秒每 hz 次检查 numclients/(hz*10) 个客户端。Hz 是您可以调整的 Redis 参数。