Skip to content

Commit 34e2c0b

Browse files
committed
Update redis-all.md
1 parent 198a59f commit 34e2c0b

File tree

1 file changed

+40
-8
lines changed

1 file changed

+40
-8
lines changed

docs/database/Redis/redis-all.md

Lines changed: 40 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,6 @@
4040
<!-- /code_chunk_output -->
4141

4242

43-
4443
### 1. 简单介绍一下 Redis 呗!
4544

4645
简单来说 **Redis 就是一个使用 C 语言开发的数据库**,不过与传统数据库不同的是 **Redis 的数据是存在内存中的** ,也就是它是内存数据库,所以读写速度非常快,因此 Redis 被广泛应用于缓存方向。
@@ -628,21 +627,54 @@ AOF 重写是一个有歧义的名字,该功能是通过读取数据库中的
628627

629628
### 15. Redis 事务
630629

631-
Redis 可以通过 **MULTIEXECDISCARD 和 WATCH** 等命令来实现事务(transaction)功能。
630+
Redis 可以通过 **`MULTI``EXEC``DISCARD``WATCH`** 等命令来实现事务(transaction)功能。
632631

633632
```bash
634633
> MULTI
635634
OK
636-
> INCR foo
635+
> SET USER "Guide哥"
637636
QUEUED
638-
> INCR bar
637+
> GET USER
639638
QUEUED
640639
> EXEC
641-
1) (integer) 1
642-
2) (integer) 1
640+
1) OK
641+
2) "Guide哥"
642+
```
643+
644+
使用 [`MULTI`](https://redis.io/commands/multi)命令后可以输入多个命令。Redis 不会立即执行这些命令,而是将它们放到队列,当调用了[`EXEC`](https://redis.io/commands/exec)命令将执行所有命令。
645+
646+
这个过程是这样的:
647+
648+
1. 开始事务(`MULTI`)。
649+
2. 命令入队(批量操作 Redis 的命令,先进先出(FIFO)的顺序执行)。
650+
3. 执行事务(`EXEC`)。
651+
652+
你也可以通过 [`DISCARD`](https://redis.io/commands/discard) 命令取消一个事务,它会清空事务队列中保存的所有命令。
653+
654+
```bash
655+
> MULTI
656+
OK
657+
> SET USER "Guide哥"
658+
QUEUED
659+
> GET USER
660+
QUEUED
661+
> DISCARD
662+
OK
643663
```
644664

645-
使用 [MULTI](https://redis.io/commands/multi)命令后可以输入多个命令。Redis 不会立即执行这些命令,而是将它们放到队列,当调用了[EXEC](https://redis.io/commands/exec)命令将执行所有命令。
665+
[`WATCH`](https://redis.io/commands/watch) 命令用于监听指定的键,当调用 EXEC 命令执行事务时,如果一个被 `WATCH` 命令监视的键被修改的话,整个事务都不会执行,直接返回失败。
666+
667+
```bash
668+
> WATCH USER
669+
OK
670+
> MULTI
671+
> SET USER "Guide哥"
672+
OK
673+
> GET USER
674+
Guide哥
675+
> EXEC
676+
ERR EXEC without MULTI
677+
```
646678

647679
Redis 官网相关介绍 [https://redis.io/topics/transactions](https://redis.io/topics/transactions) 如下:
648680

@@ -796,4 +828,4 @@ Cache Aside Pattern 中遇到写请求是这样的:更新 DB,然后直接删
796828

797829
**Java 工程师必备学习资源:** 一些 Java 工程师常用学习资源公众号后台回复关键字 **“1”** 即可免费无套路获取。
798830

799-
![我的公众号](https://my-blog-to-use.oss-cn-beijing.aliyuncs.com/2019-6/167598cd2e17b8ec.png)
831+
![我的公众号](https://my-blog-to-use.oss-cn-beijing.aliyuncs.com/2019-6/167598cd2e17b8ec.png)

0 commit comments

Comments
 (0)