曾经被面试官问,redis中pipline和multi的区别,那是我不清楚,本着复盘的心,查了些资料,并自己动手实验

总结如下

  • pipeline选择客户端缓冲,multi选择服务端缓冲;
  • 请求次数的不一致,multi需要每个命令都发送一次给服务端,pipeline最后一次性发送给服务端,请求次数相对于multi减少
  • multi/exec可以保证原子性,而pipeline不保证原子性(redis的原子性不等同于数据库的原子性)

如果redis,这开启事务后,命令入队能在检查时就知道这是个有问题的命令,那此时可以保证原子性

如果是要等到运行时才能判断出是不可执行命令,这redis会跳过此命令,执行后面的命令。切记!切记!

03-15 05:20