python - 带 gevent 的 redis-py

标签 python redis gevent

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

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

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

换个说法:

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

from gevent import monkey

monkey.patch_all()

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

最佳答案

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

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

redis + gevent - Poor performance - what am I doing wrong?

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

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

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

关于python - 带 gevent 的 redis-py,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10928481/

相关文章:

java - Redis - 存储和获取带有详细信息的有限 key

redis - 在 Kubernetes 中公开 Redis 集群中的每个 pod

python - 这是使 mysql 在 django 应用程序中与 gevent 良好配合的最佳选择

python - 如何在 Gevent 中实现多生产者、多消费者范式?

Python 连接不显示 Swagger UI

python - 在 voluptuous 中忘记 Schema() 后没有错误

phpRedis迁移到集群和一致性哈希

python - uwsgi、gevent 和异步循环 - UnboundLocalError : local variable 'query_string' referenced before assignment

python - Dataframe 中的转换矩阵未传递值

python - 使用 pytest 设置的 Lambda 处理程序上下文 aws_request_id