Redis是一个开放源代码(BSD许可)的内存中数据结构存储,用作数据库,缓存和消息代理。
一、Redis数据存储的方式有两种
1 | 单纯的缓存模式, 整个数据的生命周期随着Redis Server的停止而消失。 |
二、Redis如何实现持久化存储?Redis提供了两种方式。
1 | RDB(Redis DataBase) |
三、RDB
RDB的工作原理有点像运维脚本自动化定时备份数据一样,当内存中的数据到达配置的阈值就会执行DUMP操作备份数据到临时文件,备份成功结束后重命名为dump.rdb文件。
1 | 优点:fork子进程来进行备份,父进程不会进行io操作。恢复数据时的速度很快。 |
四、AOF
AOF的工作原理是讲写操作(数据)格式化追加到日志尾部,该日志文件保存了所有的历史操作数据,这一点非常类似Mysql中的bin.log。
1 | 优点:AOF这种方式可以保证较高的数据完整性,可以设置不同的策略,比如不保存,每一秒钟保存一次,或者每执行一个命令保存一次。AOF的默认策略为每一秒钟保存一次, 就算出现down机最多也就丢失1秒钟的数据, AOF备份数据因为是在后台线程执行fork子进程, 所以不会阻塞主线程。 |
五、AOF备份触发机制
1 | 1. Redis服务端接收到客户端bgrewriteaof指令请求,如果当前没有在进行备份那么立即进行备份,否则等待备份完毕之后再执行备份。 |
六、那究竟使用哪种方式?
1 | RDB 会有丢失数据风险,备份文件体积小,数据备份/恢复速度快。 |
首先,我们明白AOF, RDB的优缺点之后可以概括出: AOF适合热备,RDB适合冷备,Redis4.0以后允许使用aof-use-rdb-preamble配置项打开RDB-AOF混合持久化。
七、RDB/AOF混合使用的之后备份文件的变化
当RDB和AOF同时开启之后
1 | 1. Redis默认会优先加载AOF的配置文件。 |
八、AOF文件内容格式
AOF文件内容格式是Redis通讯协议RESP(REdis Serialization Protocol)格式的命令文本存储,在此不展开学习后续会专门学习Redis的RESP协议。
最后
附上Redis对于持久化方式说明的文档