27

redis-py 库可以与 gevent 一起使用吗?

有没有人有使用 gevent 运行 redis-py 库的经验?有工作的例子吗?

他们在一起玩得好吗?是否有任何预防措施或技巧可以让它们大规模工作?

换句话说,这个问题:

要使用 gevent greenlets 进行 redis-py 连接,除了monkeypatch 套接字之外,我还需要做什么特别的事情吗?

from gevent import monkey

monkey.patch_all()

然后像往常一样使用redis-py?

4

1 回答 1

22

是的,redis-py 与 gevent 配合得很好。

您可以查看我对以下问题的回答:您会找到一个示例和一些备注。

redis + gevent - 性能不佳 - 我做错了什么?

主要的陷阱是考虑到因为 gevent 是异步的并且套接字是猴子补丁的,所以往返 Redis 的成本会神奇地消失。这是完全错误的。

当同时使用多个连接时,gevent 主要是有趣的,因此可以分解事件循环系统调用。如果用户代码在少量连接上生成大量到 Redis 的同步往返,则会涉及延迟,即使这些连接是由 gevent 以异步方式管理的。

因此,即使使用 gevent,也必须始终使用流水线来优化通信成本。

于 2012-06-07T10:08:23.727 回答