当前位置: 首页 > 面试题库 >

Redis中有多个命令时,是否应该始终使用流水线操作?

公冶翰池
2023-03-14
问题内容

我是redis的新手,应该使用流水线操作时还是有些困惑,或者应该在发送多个命令时始终使用它?

例如,如果我想一次向Redis服务器发送10条SET命令,我是否应该简单地一个接一个地运行这10条命令,还是应该对它们进行流水线处理?

用管道传输10条SET命令而不是一一发送它们有什么缺点吗?

非常感谢。


问题答案:

当我应该使用流水线

当需要向Redis发送许多命令时,管道用于减少RTT,从而可以提高性能

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

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

如果我想一次向Redis服务器发送10条SET命令,我是否应该简单地一个接一个地运行这10条命令,或者应该对它们进行管道传输?

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

用管道传输10条SET命令而不是一一发送它们有什么缺点吗?

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



 类似资料:
  • 我使用spring boot webflux以非阻塞方式连接和查询Redis。我已经用LettuceConnectionFactory配置了reactivedistemplate。spring文档指出,将管道与reactivedistemplate一起使用的唯一方法是使用execute( 所以我的问题是,在使用Spring ReactiveRedisTemplate时,是否可以对命令进行管道连接?

  • 问题内容: 使用Java 8和lambda,可以很容易地将集合作为流进行迭代,也很容易使用并行流。docs中的两个示例,第二个示例使用parallelStream: 只要我不关心顺序,使用并行会始终有益吗?有人会认为,更快地将工作划分到更多的内核上。 还有其他考虑事项吗?什么时候应该使用并行流,什么时候应该使用非并行? (问这个问题可以引发关于如何以及何时使用并行流的讨论,不是因为我认为始终使用并

  • 使用Java 8和lambdas可以很容易地将集合作为流进行迭代,使用并行流也同样容易。文档中的两个示例,第二个使用ParallelStream: 只要我不关心顺序,使用平行会一直是有益的吗?人们会认为在更多的核心上分配工作是更快的。 还有其他考虑吗?什么时候应该使用并行流,什么时候应该使用非并行流? (问这个问题是为了引发关于如何以及何时使用并行流的讨论,而不是因为我认为始终使用它们是一个好主意

  • 我试图创建一个beam管道,在一个PCollection上同时应用多个ParDo转换,并在列表中收集和打印所有结果。到目前为止,我经历了顺序的过程,就像第一个帕尔多,然后第二个帕尔多。下面是我为我的问题准备的一个例子:

  • 问题内容: 在Java <1.5中,常量将像这样实现 并且您可以像这样使用它: 现在,显然在1.5中,您应该使用枚举: 现在您可以像这样使用它: 我觉得有点难看。现在,我可以轻松添加几个静态变量: 现在,我可以再次执行此操作: 具有枚举的所有类型安全性。 这是好风格还是坏风格?您能想到更好的解决方案吗? 更新资料 Vilx-是第一个强调我所缺少的东西的人-枚举应该是一等公民。在Java中,这意味着

  • 问题内容: 当我们在Redis中使用事务时,它基本上流水线化了事务中的所有命令。当EXEC被触发时,所有命令将一起执行,从而始终保持多个命令的原子性。 这与流水线不一样吗? 流水线和事务有何不同?另外,为什么Redis的单线程性质不足以满足要求?为什么我们明确需要流水线/事务? 问题答案: 流水线主要是网络优化。从本质上讲,这意味着客户端可以缓冲一堆命令并将它们一次性发送到服务器。不能保证在事务中