File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 1+ 面试官:Redis的持久化了解嘛?
2+
3+ 我:了解,Redis的持久化分为两种:** RDB和AOF**
4+
5+ ** RDB** :
6+
7+ ** RDB** 是一种** 快照存储持久化** 方式,具体就是将` Redis ` 某一时刻的内存数据保存到硬盘的文件当中,默认保存的文件名为` dump.rdb ` 。在` Redis ` 服务器启动时,会重新加载` dump.rdb ` 文件的数据到内存当中恢复数据。
8+
9+ 优点:
10+ 1 . RDB会生成多个数据文件,** 每个数据文件都代表了某一个时刻中redis的数据** ,这种多个数据文件的方式,非常适合** 做冷备** 。
11+ 2 . RDB对redis对外提供读写服务的时候,影像非常小,因为redis 主进程只需要fork一个子进程出来,让子进程对磁盘io来进行rdb持久化
12+ 3 . ** RDB 在恢复大数据集时的速度比 AOF 的恢复速度要快** 。
13+
14+ 缺点:
15+ 1 . ** 如果redis要故障时要尽可能少的丢失数据,RDB没有AOF好** ,例如1:00进行的快照,在1:10又要进行快照的时候宕机了,这个时候就会丢失10分钟的数据。
16+ 2 . RDB每次fork出子进程来执行RDB快照生成文件时,如果文件特别大,可能会导致客户端提供服务暂停数毫秒或者几秒
17+
18+ ![ rdb] ( http://media.dreamcat.ink/uPic/iShot2020-08-12下午04.56.18.png )
19+
20+ ** AOF** :
21+
22+ ** AOF** :把所有的** 对Redis的服务器进行修改的命令都存到一个文件里,命令的集合** 。 使用AOF做持久化,每一个写命令都通过write函数追加到appendonly.aof中。aof的默认策略是每秒钟fsync一次,在这种配置下,就算发生故障停机,也最多丢失一秒钟的数据。 缺点是对于相同的数据集来说,AOF的文件体积通常要大于RDB文件的体积。根据所使用的fsync策略,AOF的速度可能会慢于RDB。 Redis默认是快照RDB的持久化方式。对于主从同步来说,主从刚刚连接的时候,进行全量同步(RDB);全同步结束后,进行增量同步(AOF)。
23+
24+ 优点:
25+ 1 . ** AOF可以更好的保护数据不丢失,一般AOF会以每隔1秒** ,通过后台的一个线程去执行一次fsync操作,如果redis进程挂掉,最多丢失1秒的数据。
26+ 2 . ** AOF以appen-only的模式写入,所以没有任何磁盘寻址的开销,写入性能非常高** 。
27+ 3 . AOF日志文件的命令通过非常可读的方式进行记录,这个非常适合做灾难性的误删除紧急恢复,如果某人不小心用flushall命令清空了所有数据,只要这个时候还没有执行rewrite,那么就可以将日志文件中的flushall删除,进行恢复。
28+
29+ 缺点:
30+ 1 . 对于同一份文件** AOF文件比RDB数据快照要大** 。
31+ 2 . AOF开启后支持写的QPS会比RDB支持的写的QPS低,因为AOF一般会配置成每秒fsync操作,每秒的fsync操作还是很高的
32+ 3 . ** 数据恢复比较慢,不适合做冷备** 。
33+
34+ ![ AOF] ( http://media.dreamcat.ink/uPic/iShot2020-08-12下午04.57.10.png )
35+
36+ ** 如何选择:**
37+
38+ 如何选择:
39+
40+ 综合AOF和RDB两种持久化方式,** 用AOF来保证数据不丢失,作为恢复数据的第一选择** ;** 用RDB来做不同程度的冷备,在AOF文件都丢失或损坏不可用的时候,可以使用RDB进行快速的数据恢复** 。
41+
Original file line number Diff line number Diff line change 6969- [ 类加载过程] ( /Interview/sad/类加载过程.md )
7070- [ 类加载器] ( /Interview/sad/类加载器.md )
7171- [ JVM内存区域] ( /Interview/sad/JVM内存区域.md )
72- - [ 逃逸分析] ( /Interview/sad/逃逸分析.md ) )
72+ - [ 逃逸分析] ( /Interview/sad/逃逸分析.md )
7373- [ 对象的创建过程] ( /Interview/sad/对象的创建过程.md )
7474- [ 垃圾回收] ( /Interview/sad/垃圾回收.md )
7575- [ InnoDB和MyISAM] ( /Interview/sad/InnoDB和MyISAM.md )
8080- [ MySQL的锁] ( /Interview/sad/MySQL的锁.md )
8181- [ Redis的模型] ( /Interview/sad/Redis的模型.md )
8282- [ Redis数据结构] ( /Interview/sad/Redis数据结构.md )
83+ - [ Redis持久化] ( /Interview/sad/Redis持久化.md )
8384
8485## 刷题系列
8586- [ 推荐:CS-Notes] ( https://cyc2018.github.io/CS-Notes/#/?id=✏️-算法 )
You can’t perform that action at this time.
0 commit comments