Redis的multi为何不像pipeline那样将命令打包一次性发给redis服务端,而是一条命令发一个包?

Redis的multi为何不像pipeline那样将命令打包一次性发给redis服务端,而是一条命令发一个包?

阅读 1.4k
1 个回答

默认情况下,redismulti 命令是 Redis::MULTI 的方式将命令逐条发给redis服务端,这个方式的好处就是可以保证发给redis的一系列命令以原子方式执行。但缺点也相当明显,效率比较低。
所以,如题主所问,redismulti 也提供了 pipeline 的方式发送,只要 设置 Redis::PIPELINE 的方式就可以了

$multi = $redis->multi(Redis::PIPELINE);

使用了 pipeline 就不能保证原子性,所以针对业务场景再选择使用哪种方式。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题