redis持久化AOF和RDB
一、AOF
三种写入策略:
1. Always:
执行redis写命令之后,立即执行写回磁盘,写入磁盘之后,才会返回结果,同步进行,会增加redis的响应延迟,如果此时磁盘io很繁忙,那么写如磁盘就会慢,那么redis 也会增加延迟时间。
2. EverySecond
相比于Always,Redis后台会又一个专门的线程每秒读取AOF日志缓冲区的命令,然后再写入磁盘。
3. No
Redis写入到内存成功后也会同时写入AOF缓冲区,但是此时Redis的后台线程不会执行写入磁盘的操作,而是由操作系统决定。何时存储到磁盘。
策略 | 何时写盘 | 优 点 | 缺 点 |
---|---|---|---|
Aways | 同步写入 | 基本不丢失,增加延迟 | io 忙的情况下,会增加线程返回结果的延迟时间,断电的时候会丢失还来的急写入的命令 |
EverySecond | 每秒写入 | 性能好,不会增加太大延迟 | 断电会丢失一秒的数据 |
No | 操作系统写入 | 性能好,不会增加太大延迟 | 丢失数据多少,由操作系统写磁盘频率决定 |
二、RDB(Redis DataBase)
AOF和RDB区别
RDB
RDB 文件是经过压缩的二进制文件,占用空间很小,也就是记录redis某一时刻的内存中的全部数据,将这个时刻的数据持久化到磁盘,实际有多少数据就存储多少。恢复速度很快。
AOF
同样的Key如果操作多次日志中会有多条记录,而AOF会将这些记录都写到磁盘中
RDB缺点
因为RDB保存的是某一时刻的内存全部数据,我们在某个时刻生成RDB 文件,假设生成的时间是5s,那么在这之后的这段5s 内的内存数据,是不会参与保存的,造成数据丢失。
本文摘自:https://juejin.cn/post/6977280046553628709 / https://juejin.cn/post/6978759015786348581
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 内卷 | Team!
评论