【问题标题】:When does Redis pipelining become more efficient?Redis 流水线何时变得更高效?
【发布时间】:2019-03-22 07:54:39
【问题描述】:

我想知道,流水线何时变得更有效率?例如。如果我必须查询服务器一次,那么管道的效率将低于仅使用 redis 实例。

如果我必须查询服务器两次,例如检查是否存在,如果存在,抓住它,管道效率更高还是正在使用redis实例?

如果我必须查询三遍......等等。

流水线什么时候比使用redis实例更高效?~

谢谢

【问题讨论】:

    标签: redis pipeline jedis


    【解决方案1】:

    如果只操作一次,也是一样的。

    流水线式批处理机制。如果你有三个命令以正常方式执行,客户端需要发送三个 tcp 包和接收三个 tcp 包(每个命令需要发送一个和接收一个);但是当使用流水线时,客户端打包3命令到服务器,只发送一个tcp数据包并接收一个。

    可以看官方文档:Using pipelining to speedup Redis queries

    【讨论】:

    • 谢谢,这很有道理,很有帮助!
    • 嗨,这是否意味着当有多个命令要发送到服务器时,我应该始终使用流水线?有什么缺点吗?我在stackoverflow.com/questions/54900928 中问这个问题。有空的时候可以看看。非常感谢。
    • @sgon00 是的,它有,因为redis服务器是单线程来处理命令的。如果一个客户端提交大流水线命令,它将阻止其他客户端处理。和mysql一样,可以一次查询10000行,也可以100次查询100行。
    • @shaoyihe 明白了这一点。非常感谢您的回复。那么我应该流水线 10 个 SET 命令吗?还是我应该一一发送?
    • @sgon00 没有单一的解决方案。我更喜欢管道 10 SET 命令。
    猜你喜欢
    • 2014-04-04
    • 2017-03-24
    • 2018-02-09
    • 2013-07-12
    • 2012-05-17
    • 2015-06-02
    • 2011-08-22
    • 2023-01-22
    • 2019-01-22
    相关资源
    最近更新 更多