当我们在Redis中使用事务时,它基本上管道事务中的所有命令。当EXEC被触发时,所有命令一起执行,因此始终保持多个命令的原子性。
这与流水线相同吗?
流水线和交易有何不同? 另外,为什么Redis的单线程性质不足?为什么我们明确需要流水线/事务?
答案 0 :(得分:50)
流水线操作主要是网络优化。它本质上意味着客户端缓存了一堆命令并一次性将它们发送到服务器。不保证在事务中执行命令。这里的好处是为每个命令节省了网络往返时间。
Redis是单线程的,因此个人命令始终是原子的,但是来自不同客户端的两个给定命令可以按顺序执行,例如在它们之间交替。
但是,Multi / exec确保没有其他客户端在multi / exec序列中的命令之间执行命令。