Redis持久化之RDB(Redis DataBase)及其总结

时间:2021-08-13 00:44:43

1、RDB是什么?

RDB 是 Redis 默认的持久化方案。在指定的时间间隔内,执行指定次数的写操作,则会将内存中的数据写入到磁盘中。即在指定目录下生成一个dump.rdb文件。Redis 重启会通过加载dump.rdb文件恢复数据重启时,会重新load加载AOF文件中的写操作达到数据恢复的目的;

RDB持久化流程:

(1) Redis使用fork函数复制一份当前进程(父进程)的副本;

(2) 父进程继续接受并处理客户端发来的命令,而子进程开始将内存中的数据写入到硬盘中的临时文件;

(3) 当子进程写入完成所有数据后会用该临时文件替换旧的RDB文件。

Redis持久化之RDB(Redis DataBase)及其总结


2、RDB 设置

    找到Redis的配置文件:redis.conf

    1) 设置触发条件:

    Redis持久化之RDB(Redis DataBase)及其总结

Redis持久化之RDB(Redis DataBase)及其总结             

save :save时只管保存,其它不管,全部阻塞。手动保存。不建议。

    bgsave:Redis会在后台异步进行快照操作,快照同时还可以响应客户端请求。

    可以通过lastsave 命令获取最后一次成功执行快照的时间

     2) 设置rdb文件路径

         默认rdb文件存放路径是当前目录,文件名是:dump.rdb。可以在配置文件中修改路径和文件名,分别是dir和dbfilename

        Redis持久化之RDB(Redis DataBase)及其总结

Redis启动后会读取RDB快照文件,将数据从硬盘载入到内存,一般情况下1GB的快照文件载入到内存的时间大约20-30分钟。

注意:由于redis使用fork来复制一份当前进程,那么子进程就会占有和主进程一样的内存资源,比如说主进程8G内存,那么在备份的时候必须保证有16G内存,要不然会启用虚拟内存,性能非常差。

     3) RDB文件的压缩

         RDB文件过大时,是可以压缩的,Redis默认开启压缩,当然也可以通过配置rdbcompression参数来禁用压缩。

       Redis持久化之RDB(Redis DataBase)及其总结

        压缩和不压缩的优缺点:

        压缩:

            优点:减少磁盘存储空间   缺点:消耗CPU资源

        不压缩:

            优点:不消耗CPU资源      缺点:占用磁盘空间多

3、RDB 触发机制

      1) 配置文件中的save配置;

      2) 使用save或bgsave命令;

      3) 执行flushdb flushall shutdown等命令(前二者错误数据)

      4)退出redis,也会产生rdb文件

4、RDB 恢复机制

     1)只需将rdb文件放到redis启动目录即可,redis启动时会自动检查dump.rdb文件来恢复其中的数据

     2)查看需要存在的位置 命令:config get dir

Redis持久化之RDB(Redis DataBase)及其总结

5、RDB 优缺点

     优势:

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

            2)对数据完整性和一致性要求不高更适合使用

            3)节省磁盘空间

            4)恢复速度快

     劣势:

            1)Fork的时候,内存中的数据被克隆了一份,大致2倍的膨胀性需要考虑

            2)虽然Redis在fork时使用了写时拷贝技术,但是如果数据庞大时还是比较消耗性能。