Redis持久化

发布时间 2023-07-03 00:16:18作者: 邵杠杠

Redis持久化

RDB(Redis DataBase)

说明

  Redis的数据都存储在内存中,保存备份时它执行的是全量快照,将内存中所有数据都记录到磁盘中。保存为dump.rdb。可以通过修改配置文件自定义备份的时机。

配置文件相关的修改点

1.修改备份的条件

2.禁用快照

3.dbfilename

设置备份文件的默认文件名

4.dir

修改备份文件(.rdb文件)的存储路径

5.stop-writes-on-bgsave-error

默认yes。如果配置成no,表示你不在乎数据不一致或者有其他手段发现也能确保redis继续接受新的写请求。

6.rdbcompression

默认yes。对于存储到磁盘中的快照,是否进行压缩。如果是的话,redis会采用LZF算法进行压缩。需要消耗CPU来进行压缩,如果不想消耗CPU可以设置为no。

7.rdbchecksum

默认yes。存储快照之后,redis使用CRC64算法来进行数据校验,但是这样做会增加大约10%的性能消耗,如果希望获取到最大的性能提升,可以关闭。

8.rdb-del-sync-files

在没有持久性的情况下删除复制中的RDB文件启用。默认为no,表示禁用此功能。

常用命令

save(阻塞保存)

在主程序中执行备份,会阻塞当前redis服务器,直到备份完成后。执行save命令期间,redis不能处理其他命令,线上禁止使用。

bgsave(不阻塞保存)

redis会在后台异步进行快照(备份)操作,不阻塞主程序。备份同时还可以响应客户端请求。该出发方式会fork一个子进程,,由子进程进行备份。

lastsave

查看最后一次备份的时间

redis-check-rdb

格式

redis-check-rdb xxx.rdb(文件名)

修复损坏的rdb文件

优缺点

优点

1.适合大规模的数据恢复

2.按照业务定时备份

3.对数据完整性和一致性要求不高

4.RDB文件在内存中的家在速度要比 AOF 快的多

缺点

1.在一定间隔时间做一次备份,所以如果redis意外down机的话,就会丢失从当前至最后一次快照期间的数据,快照之间的数据会丢失。

2.内存数据的全量同步,如果数据量太大会导致I/O严重,影响服务器的性能

3.RDB依赖于主进程的fork,在更大的数据集中,着可能会导致服务请求的瞬间延迟。fork的时候内存中的数据被克隆了一份,大致2倍的膨胀性,需要考虑。

总结

 

AOF(Append Only File)

 

 

 

待更新