目录

Redis 事务

概念

  • Redis中的事务(transaction)是一组命令的集合。事务同命令一样都是Redis中的最小执行单位,一个事务中的命令要么都执行,要么都不执行。

  • 事务的原理是先将属于一个事务的命令发送给Redis,然后在让Redis一次执行这些命令。

事务命令

127.0.0.1:6379> MULTI  # 事务块的开始标记,随后的指令将在执行EXEC时作为一个原子执行
OK
127.0.0.1:6379> ping
QUEUED
127.0.0.1:6379> SET counter 1
QUEUED                 # 将命令暂存在事务队列中
127.0.0.1:6379> INCR counter
QUEUED
127.0.0.1:6379> INCR counter
QUEUED
127.0.0.1:6379> EXEC # 将事务队列中的所有命令(返回QUEUED的命令)按照发送顺序一次执行
1) PONG
2) OK
3) (integer) 2
4) (integer) 3
# EXEC的返回值就是这些命令的返回值组成的列表,返回值顺序和命令的顺序相同。
  • 如果在发送EXEC命令前客户端断线了,则Redis会清空事务队列,事务中的所有命令都不会执行

  • 一旦客户端发送了EXEC命令,所有的命令都会被执行,即使伺候客户端断线也没关系,因为Redis会记录所有要执行的命令。