`https://www.youtube.com/watch?v=aCXsdLjQLcM`
我们知道事务有几种特性
原子性
一致性
隔离性
持久性
而redis的事务不完全具有原子性
```
127.0.0.1:6379> multi
OK
127.0.0.1:6379(TX)> set key value
QUEUED
127.0.0.1:6379(TX)> set a 1
QUEUED
127.0.0.1:6379(TX)> incr key
QUEUED
127.0.0.1:6379(TX)>
127.0.0.1:6379(TX)> set a aa
QUEUED
127.0.0.1:6379(TX)> exec
1) OK
2) OK
3) (error) ERR value is not an integer or out of range
4) OK
127.0.0.1:6379> get a
"aa"
```
发现事务在执行过程中,发生错误,不影响后面命令的执行
```
127.0.0.1:6379>
127.0.0.1:6379> multi
OK
127.0.0.1:6379(TX)> set a
(error) ERR wrong number of arguments for 'set' command
127.0.0.1:6379(TX)>
127.0.0.1:6379(TX)> set b 1
QUEUED
127.0.0.1:6379(TX)> exec
(error) EXECABORT Transaction discarded because of previous errors.
127.0.0.1:6379> get b
(nil)
```
如果是语法有问题,则具有原子性