- Redis提供了
RDB
和AOF
两种持久话的方式
RDB
- RDB(Redis DataBase)是指在指定的
时间间隔
内将内存中的数据集快照
写入磁盘- Redis会单独创建一个子进程来专门进行持久化,首先会将数据写入一个
临时文件
中,待持久化结束后,在用这个临时文件覆盖上次持久化好的文件,整个持久化过程,主进程是不进行任何I/O操作的- RDB的缺点是最后一次持久化后的数据可能丢失
- RDB适合大规模数据的恢复,以及对数据的完整性和一致性要求不高的情况下
AOF
- AOF(Append Only File)以日志的形式记录每个写操作(改变内容的操作),将Redis执行过的所有
写执行
记录下来,只许追加文件但不可以改写文件,Redis启动之初会读取该文件重新构建数据,换言之,Redis重启的话就根据日志问价的内容将写指令从前到后执行一次以完成数据的恢复工作- AOF默认是不开启的,若AOF和RDB同时开启默认取AOF的数据
- 异常恢复:
- 如果遇到AOF文件损坏,通过
redis-check-aof --fix appendonly.aof
进行恢复
- AOF持久化流程:
- 客户端的请求命令会被append追加到AOF缓冲区内
- AOF缓冲区根据AOF持久化策略将操作同步到磁盘的AOF文件中
- AOF文件大小超过重写策略或手动重写时,会对AOF文件进行重写操作,压缩AOF文件容量
Redis
服务器重启时,会重新加载AOF文件中欧的写操作达到数据恢复的目的
- AOF持久化的优缺点:
- 备份机制更加稳健,丢失数据概率更低
- 可读的日志文件,通过操作AOF文件,可以处理错误操作
- 比RDB持久化方式占用空间更大,备份恢复速度更慢