简介

Redis 事务可以一次执行多个命令。

命令

开启事务需要使用multi命令就可以开启,然后输入命令,只有在exec的时候事务才会被提交

127.0.0.1:6379> multi
OK
127.0.0.1:6379(TX)> set key opcai.top
QUEUED
127.0.0.1:6379(TX)> set key1 linux
QUEUED
127.0.0.1:6379(TX)> exec
1) OK
2) OK

discard 命令可以取消事务

127.0.0.1:6379> multi
OK
127.0.0.1:6379(TX)> set key1 opcai
QUEUED
127.0.0.1:6379(TX)> set os linux 
QUEUED
127.0.0.1:6379(TX)> discard
OK

watch命令可以防止key被其他连接修改之后,事务提交重复修改了key

开启两个连接终端进行测试,一个终端在写事务的时候,暂时不要exec,另一个终端,修改了set site www.opcai.top,这时候事务就会提交失败。

127.0.0.1:6379> set site opcai 
OK
127.0.0.1:6379> watch site
OK
127.0.0.1:6379> multi
OK
127.0.0.1:6379(TX)> set site opcai.top
QUEUED
127.0.0.1:6379(TX)> set os linux
QUEUED
127.0.0.1:6379(TX)> exec
(nil)
127.0.0.1:6379> get site
"www.opcai.top"
127.0.0.1:6379> get os
(nil)

可以使用unwatch命令取消对所有key的监听,就可以正常提交了,但是有可能值跟预期的可能不一样。

总结

redis虽然支持事务,但是不支持回滚操作。