什么是事务?
可以一次执行多个命令,并且带有以下三个重要保证:
批量操作在发送exec命令前被放入对列缓存
收到exec命令后进入事务执行,事务中任意命令执行失败,其余的命令依然被执行
在事务执行过程,其他客户端提交的命令请求不会插入到事务执行命令序列中
开始事务
命令入队
执行事务
命令:MULTI
语法:MUITI
功能:标记一个事务的开始
返回值:返回OK
终端1: 127.0.0.1:6379> set account 1 OK 127.0.0.1:6379> get account "1"
终端2: 127.0.0.1:6379> get account "1" 127.0.0.1:6379> 127.0.0.1:6379> multi OK 127.0.0.1:6379(TX)> incrby account 500 QUEUED 127.0.0.1:6379(TX)> incrby account 500 QUEUED
命令:EXEC
语法:EXEC
功能:执行所有事务块的命令
返回值:
事务块内所有命令的返回值,按命令执行的先后顺序排列
当操作被打断时,返回空值nil
终端2: 127.0.0.1:6379(TX)> exec 1) (integer) 501 2) (integer) 1001
终端1: 127.0.0.1:6379> get account "1001"
命令:DISCARD
语法:DISCARD
功能:取消事务,放弃执行事务块内的所有命令
返回值:OK
命令:WATCH
语法:WATCH key [key...]
功能:监视一个或多个key ,如果在事务执行之前这个或这些key被其他命令所改动,
那么事务将被打断
返回值:OK
命令:UNWATCH
语法:UNWATCH
功能:取消WATCH命令对所有key的监视,如果在执行watch命令之后,exec命令
或discard 命令先被执行的话,那么就不需要在执行unwatch 了
返回值:ok