redis持久化

rdb是默认的持久化方式

rdb快照数据不全

rdb的触发:手动save,bgsave

自动:conf配置 save seconds times save seconds times  几秒之内几次写操作会触发,任何一个满足都会出发

save,shutdown,slave命令都会触发

 

fork子进程内存分配策略?0,1,2三种方式

 

 

aof 追加命令

aof持久化的时机,3种策略:

appendfsync always  (每次操作都写入aof文件,丢失最少,down机可能丢失一个事件循环内的数据,效率低,慢)

always是在一个while循环进行的,每一轮循环将step1 前一轮的aof_buf数据刷盘,step2.新的数据写入aof_buf。所以可能会丢失一个循环的数据。

appendfsync everysec  (每秒钟同步一次,默认策略,数据安全和效率介于另外两者之间)

appendfsync  no (redis不主动同步,由操作系统同步刷盘到aof文件,丢失数据不可预估,效率最高)

aof因为是命令追加的方式,aof文件会比rdb大很多,有时会迅速变大,怎么解决?

aof文件重写

 

 

选型?

aof和rdb各有优缺点,看更看重数据一致性还是性能、启动效率,

在两个都开启的情况下,启动后加载aof的数据,会比较慢

可以手动处理,二者都开启,先用rdb回复大部分数据,再用aof追加补上新的数据

4.0版本以后aof文件由rdb二进制数据和命令共同组成,前一部分是rewirte的结果。这样可以在压缩文件的同时尽可能保证数据的完整性。

 

redis: 优先使用aof日志,没有的话使用rdb

rdb:快照,二进行文件,文件名.RDB

rdb文件创建方式:手动(save、bgsave)、自动(/etc/redis.conf配置,使用bgsave)。

mysql:redolog

posted on 2024-05-21 14:28  小小鱼儿yz  阅读(2)  评论(0编辑  收藏  举报