本文主要介绍redis的两种数据持久化方案:AOF和RDB
更新于 2021-04-18
RDB方式
RDB方式是利用子进程在指定的时间间隔内,将内存中的数据集生成快照写入磁盘中;默认支持,不需要进行配置
优势和缺陷
优势:
- redis数据库将只包含一个文件(利于备份);
- 利于灾难恢复;
- 性能最大化,启动效率最高(原理是fork一个子进程进行数据备份);
缺陷:
- 无法完全保证数据高可用;
- 数据量大的时候可能在数据持久化的时候导致服务不可用;
如果redis使用的内存很大,例如32G等,如果使用RDB方式则建议磁盘选择ssd,否则会由于备份数据文件过大导致磁盘IO不足。
配置RDB持久化
在redis.conf配置文件中,有如下的一些关于RDB持久化的配置:
1 | // 每900秒至少1个key发生变化就持久化一次 |
AOF方式
AOF方式
将以日志的方式记录服务器处理的每一次操作。服务器启动之初会读取日志文件来重建数据库。
优势和缺陷
优势:
- 更高的数据安全性;
- 不会破坏日志文件的数据完整性;
- redis可以自动启动日志重写机制,对重复的日志进行合并,减小文件大小;
- 包含格式清晰的日志文件。可以基于这个日志文件进行数据重建和迁移;
- AOF将数据库操作顺序写到文件的最后,如果出现误操作,可以在文件中删掉最后一行在进行还原;
劣势:
- 对于相同的数据集来说,AOF往往比RDB文件大;
- 效率低于RDB;
配置AOF持久化
在redis.conf配置文件中,有如下的一些关于AOF持久化的配置:
1 | // AOF持久化功能开关,默认没有打开,改成yes表示打开 |
同时使用RDB和AOF需要注意
在同时使用AOF和RDB持久化数据的时候,重启redis后,优先使用AOF进行数据恢复。