流水线与redis中的事务

Man*_*ena 41 transactions pipelining redis

当我们在Redis中使用事务时,它基本上管道事务中的所有命令.当触发EXEC时,所有命令一起执行,从而始终保持多个命令的原子性.

流水线不一样吗?

流水线和交易如何不同?另外,为什么Redis的单线程性质不足?为什么我们明确需要流水线/事务?

The*_*ill 58

流水线操作主要是网络优化.它本质上意味着客户端缓存了一堆命令并一次性将它们发送到服务器.不保证在事务中执行命令.这里的好处是为每个命令节省了网络往返时间.

Redis是单线程的,因此单个命令总是原子的,但是来自不同客户端的两个给定命令可以按顺序执行,例如在它们之间交替.

但是,Multi/exec确保没有其他客户端在multi/exec序列中的命令之间执行命令.

  • 澄清如果我使用jedis如下:JEDIS.MULTI \\第1行; JEDIS.command1 \\第2行; JEDIS.command2 \\第3行; JEDIS.EXEC \\第4行; 然后对于每一行,这段代码将转到redis服务器,因此来自redis服务器的来回四轮.但是,如果我管道事务,那么所有四行将在一轮中转到redis服务器.是吗? (4认同)