当 Redis 中有 1 个以上的命令时,我应该总是使用流水线吗?

sgo*_*n00 1 redis

我是 redis 的新手,当我应该使用流水线还是应该在有 1 个以上的命令要发送时一直使用它时有点困惑?

例如,如果我想一次向 redis 服务器发送 10 个 SET 命令,我应该简单地一个一个运行 10 个命令还是应该将它们流水线化?

管道 10 个 SET 命令而不是一个一个地发送它们有什么缺点吗?

非常感谢。

for*_*ack 5

什么时候应该使用流水线

Pipeline 用于减少 RTT,以便在需要向 Redis 发送许多命令时提高性能。

当要发送的命令超过 1 个时,我应该一直使用它吗?

这取决于。你应该逐案讨论。

如果我想一次向 redis 服务器发送 10 个 SET 命令,我应该简单地一个一个运行 10 个命令还是应该将它们流水线化?

管道这些命令将比发送 10 个命令快得多。但是,在这种特殊情况下,最好的选择是使用MSET命令。

管道 10 个 SET 命令而不是一个一个地发送它们有什么缺点吗?

使用管道,Redis 需要消耗更多内存来保存所有这些管道命令的结果,直到您获取这些结果。因此,如果您通过管道传输太多命令,那可能是一个问题。