🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
### 概述 该持久化默认开启,一次性把redis中全部的数据保存一份存储在硬盘中(备份文件名字默认是dump.rdb,该文件自动生成),如果数据非常多(10-20G)就**不适合频繁**进行该持久化操作。该方式默认开启,有自己的触发条件 . ![](https://img.kancloud.cn/00/38/003894d4702bdb7a31dafa7a3798362f_2240x1034.png) ### 自动触发条件 该条件是在内部执行了bgsave命令. 1. save 900 1 : 900秒内如果超过1个key被修改,则发起快照保存 . 2. save 300 10 : 300秒内超过10个key被修改,发起快照. 3. save 60 10000 : 60秒内超过10000个key被修改,发起快照 . 注意:屏蔽该触发条件,即可关闭快照方式。 该配置文件在安装目录的redis.conf ![](https://box.kancloud.cn/2d35d269879ae55ab972a654ee9a1aab_358x83.png) ### 设置保存位置 备份文件文字默认是dump.rdb,我们可以自己进行修改 .在redis.conf文件中进行修改 1. dir : 目录 2. dbfilename : 文件名 ![](https://box.kancloud.cn/16686939db1caeb831e13c902bfdc3aa_683x255.png) ### 手动发起快照 **两种方式完成手动保存** **方式一**:在登录状态,执行save即可 . 但是save是同步的,也就是说会阻塞后面的命令.如果数据量过大,那么后面的命令将会等待很长时间. 执行save命令后,如果存在老的RDB文件,新替换老.富足度是O(N)的 ![](https://img.kancloud.cn/aa/11/aa111a3fec34f835491c7e6fadaeb610_3112x1350.png) **方式二**:在命令行状态,执行bgsave . 相对于save,bgsave是fork一个子进程来存储文件的.相对来说不会后序阻塞命令和速度更快. 文件策略和复杂度和save是相同的. ![](https://img.kancloud.cn/11/cf/11cf859f513d3c29cc96e2f888ca8247_3024x1626.png) ### 对比 ![](https://img.kancloud.cn/ea/8b/ea8b1613ab99fca9e72c35ef71bb44df_2510x1136.png) ### 缺点 1. 由于快照方式是在一定间隔做一次的,所以如果redis意外down掉的话,就会丢失最后一次快照后的所有修改,一般情况下保持默认就行了,时间间隔太短了,会造成服务器的压力。 2. 无法主动控制存储的时间. ### 相对最佳配置 1. 关闭自动保存; 2. 根据端口号保存rdb文件; 3. 当bgsave发生错误,停止; 4. 使用压缩方式; 5. 使用数据校验 ![](https://img.kancloud.cn/85/cd/85cda7a9711172a645825803357629cd_1438x892.png) ### 触发机制--不容忽略方式 1. 全量复制; 2. debug reload; 3. shutdow; ### RDB总结 1. RDB是Redis内存到硬盘的快照,用于持久化; 2. save通常会阻塞Redis; 3. bgsave不会阻塞Redis,但是会fork新进程; 4. save自动配置满足任一条件就会被执行.(但是我们通常不会使用自动配置); 5. 有些触发机制不容忽视; ### RDB存在问题 1. 耗时耗性能; 2. 不可控,容易丢失数据;