Redis 持久化两种方式优缺点

mac2022-06-30  17

RDB优点: (1)RDB会生成多个数据文件,每个数据文件都代表了某一个时刻中redis的数据,这种多个数据文件的方式,非常适合做冷备。 (2)RDB对redis对外提供读写服务的时候,影响非常小,因为redis 主进程只需要fork一个子进程出来,让子进程对磁盘io来进行rdb持久化 (3).RDB 在恢复大数据集时的速度比 AOF 的恢复速度要快。 RDB的缺点: 1、服务器故障时候会丢失数据。虽然可以调整RDB文件的保存频率,但是要保存整个数据集的快照,也不可能太频繁。所以使用RDB,如果服务器出现故障可能出现丢失几分钟的数据。 2、每次保存 RDB 的时候,Redis 都要 fork() 出一个子进程,并由子进程来进行实际的持久化工作。 在数据集比较庞大时, fork() 可能会非常耗时,造成服务器在某某毫秒内停止处理客户端; 如果数据集非常巨大,并且 CPU 时间非常紧张的话,那么这种停止时间甚至可能会长达整整一秒。 AOF的优点: (1)AOF可以更好的保护数据不丢失,一般AOF会以每隔1秒,通过后台的一个线程去执行一次fsync操作,如果redis进程挂掉,最多丢失1秒的数据。 (2)AOF以appen-only的模式写入,所以没有任何磁盘寻址的开销,写入性能非常高。 (3)AOF日志文件的命令通过非常可读的方式进行记录,这个非常适合做灾难性的误删除紧急恢复,如果某人不小心用flushall命令清空了所有数据,只要这个时候还没有执行rewrite,那么就可以将日志文件中的flushall删除,进行恢复。 AOF的缺点 (1)对于同一份文件AOF文件比RDB数据快照要大。 (2)AOF开启后支持写的QPS会比RDB支持的写的QPS低,因为AOF一般会配置成每秒fsync操作,每秒的fsync操作还是很高的 (3)数据恢复比较慢,不适合做冷备。 水平有限,不足之处还请各位读者提出修正意见。

最新回复(0)