redis事务特性: 事务不保整原子性,有一条执行失败,其他的正常执行不保证回滚。 事务中的所有命令,都会被序列化,按顺序执行,不会被其他客户端的命令打断。 事务没有隔离级别,没有提交之前都不会被执行。 事务流程: multi 开启事务,exec执行事务。执行事务之前有命令出错了,会执行失败。discard 回滚事务。 也可以通过watch监视key的value,当执行事务时,值已经发生了变化了,和监视时不一致,会执行失败报错。
开启并执行一个事务:
127.0.0.1:6379> multi
OK
127.0.0.1:6379> set key6 1
QUEUED
127.0.0.1:6379> set key7 7
QUEUED
127.0.0.1:6379> exec
1) OK
2) OK
127.0.0.1:6379> get key6
"1"
127.0.0.1:6379> get key7
"7"
127.0.0.1:6379>
执行事务前命令不能有错误:
127.0.0.1:6379> multi
OK
127.0.0.1:6379> set key3 3
QUEUED
127.0.0.1:6379> set key4
(error) ERR wrong number of arguments for 'set' command
127.0.0.1:6379> exec
(error) EXECABORT Transaction discarded because of previous errors.
127.0.0.1:6379>
执行时有命令错误不影响其他,只是