【问题标题】:How many commands could redis-py pipeline have?redis-py 管道可以有多少个命令?
【发布时间】:2014-11-19 17:07:12
【问题描述】:

我想使用管道来减少我的程序和redis-server之间的交互次数。
我可以在管道中设置许多命令,但我找不到任何描述可以在管道中设置的最大命令数的文档。

有什么建议吗?提前致谢。

【问题讨论】:

    标签: python redis redis-py


    【解决方案1】:

    不确定是否有最大值,但我认为你不想达到它以防万一。

    在大多数情况下,将管道大小限制为 100-1000 次操作可以获得最佳结果。但是,您可以进行一些基准研究,其中包括您发送的典型请求。 流水线请求通常很好,但请记住,响应会保存在 Redis 内存中,直到所有流水线请求都得到处理,并且您的客户端会等待所有请求的长回复。

    您应该尝试找到并发连接、流水线请求和 Redis 内存的最佳点。

    在您的管道的最后一个查询发送到 Redis 之前,您的客户端不会开始阅读回复。当管道太长时,它有可能阻塞东西。

    您可以使用redis-benchmarkmemtier_benchmarkHere's memtier_benchmark 上有更详细的描述和说明。

    当您找到流水线请求的数量和连接数时,您应该在您的应用中使用您的 redis-py 客户端来实现它。

    【讨论】:

    • 这里最重要的方面是测试您自己的用例。我已经看到了在不同场景中最有效的方法。我见过最好的数字,有些人不到 50 岁,有些人超过 2000 人。
    • 我们目前在生产中遇到了一些问题,我们在一次管道调用中发送了大约 200k 个命令(100k 乘以一对 getsetex)(尽管使用 PHP)。直到最近才出现问题,数量缓慢增加。但目前我们正在接收随机的true 结果,我现在将尝试看看分块是否会产生(大)差异,但据我所知,没有实际的强制限制。似乎传输在某些时候会导致问题。
    猜你喜欢
    • 2012-03-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多