redis中的事务:
事务是指一系列操作步骤,这一系列的操作步骤,要么完全地执行,要么完全地不执行。
Redis
中的事务(
transaction
)是一组命令的集合,至少是两个或两个以上的命令,
redis
事务保证这些命令被执行时中间不会被任何其他操作打断。
redis事务的常用指令
(
1
)
multi
语法:
multi
作用:标记一个事务的开始。事务内的多条命令会按照先后顺序被放进一个队列当中。
返回值:总是返回
ok
(
2
)
exec
语法:
exec
作用:执行所有事务块内的命令
返回值:事务内的所有执行语句内容,事务被打断,返回
nil
(
3
)
discard
语法:
discard
作用:
取消事务,放弃执行事务块内的所有命令
返回值:总是返回
ok
(
4
)
watch
语法:
watch key [key ...]
作用:
监视一个
(
或多个
) key
,如果在事务执行之前这个
(
或这些
) key
被其他命令所改动,
那么事务将被打断。
返回值:
总是返回
ok
(
5
)
unwatch
语法:
unwatch
作用:取消
WATCH
命令对所有
key
的监视。如果在执行
WATCH
命令之后,
EXEC
命令
或
DISCARD
命令先被执行了的话,那么就不需要再执行
UNWATCH
了
返回值:总是返回
ok
事务的实现
例如:
查询结果:
(1) 事务执行 exec 之前,入队命令错误(语法错误;严重错误导 致服务器不能正常工作(例如内存不足)),放弃事务。
总结:redis中出现人为的语法错误,事务执行失败。
(2) 事务执行 exec 命令后,命令执行错误,事务提交
总结:redis中出现编译时出现的错误(语法看不出错误,但是执行时报错),除了报错的事务,其他事务都正常提交,事务不回滚。