redis事务的使用

`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)
```
如果是语法有问题,则具有原子性

    A+
发布日期:2022年01月12日  所属分类:未分类

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: