Redis持久化策略RDB与AOF

Redis是基于内存操作,但作为⼀个数据库也具备数据的持久化能⼒;但是为了实现⾼效的读写操作,并不会

即时进⾏数据的持久化,⽽是按照⼀定的规则进⾏持久化操作的——持久化策略

Redis提供了2中持久化策略:

RDB (Redis DataBase)

AOF(Append Only File)

RDB

在满⾜特定的redis操作条件时,将内存中的数据以数据快照的形式存储到rdb⽂件中

Redis持久化策略RDB与AOF_第1张图片

原理:

RDB是redis默认的持久化策略,当redis中的写操作达到指定的次数、同时距离上⼀次持久化达到指定的时间

就会将redis内存中的数据⽣成数据快照,保存在指定的rdb⽂件中。

默认触发持久化条件:

900s 1次:当操作次数达到1次,900s就会进⾏持久化

300s 10次:当操作次数达到10次,300s就会进⾏持久化

60s 10000次:当操作次数达到10000次,60s就会就⾏持久化

我们可以通过修改redis.conf⽂件,来设置RDB策略的触发条件:

## rdb持久化开关

rdbcompression yes

## 配置redis的持久化策略

save 900 1

save 300 10

save 60 10000

## 指定rdb数据存储的⽂件

dbfilename dump.rdb

RED持久化细节分析:

缺点

如果redis出现故障,存在数据丢失的⻛险,丢失上⼀次持久化之后的操作数据;

RDB采⽤的是数据快照形式进⾏持久化,不适合实时性持久化;

如果数据量巨⼤,在RDB持久化过程中⽣成数据快照的⼦进程执⾏时间过⻓,会导致redis卡顿,因此

save时间周期设置不宜过短;

优点

但是在数据量较⼩的情况下,执⾏速度⽐较快;

由于RDB是以数据快照的形式进⾏保存的,我们可以通过拷⻉rdb⽂件轻松实现redis数据移植

AOF

Apeend Only File,当达到设定触发条件时,将redis执⾏的写操作指令存储在aof⽂件中,Redis默认未开启aof

持久化

Redis持久化策略RDB与AOF_第2张图片

原理:

Redis将每⼀个成功的写操作写⼊到aof⽂件中,当redis重启的时候就执⾏aof⽂件中的指令以恢复数据

配置:

## 开启AOF

appendonly yes

## 设置触发条件(三选⼀)

appendfsync always        ## 只要进⾏成功的写操作,就执⾏aof

appendfsync everysec    ## 每秒进⾏⼀次aof

appendfsync no                 ## 让redis执⾏决定aof

## 设置aof⽂件路径

appendfilename "appendonly.aof"

AOF细节分析:

也可以通过拷⻉aof⽂件进⾏redis数据移植

aof存储的指令,⽽且会对指令进⾏整理;⽽RDB直接⽣成数据快照,在数据量不⼤时RDB⽐较快

aof是对指令⽂件进⾏增量更新,更适合实时性持久化

redis官⽅建议同时开启2中持久化策略,如果同时存在aof⽂件和rdb⽂件的情况下aof优先

你可能感兴趣的:(linux,redis,缓存,数据库)