redis所有的数据保存在内存中,对数据的更新将异步地保存在硬盘中。
redis在硬盘上创建一个二进制的rdb文件,redis启动时会把这个rdb文件载入到内存中
自动
通过配置自动生成RDB文件,达到某个条件就会通过bgsave生成RDB二进制文件
| 配置 | seconds | changes |
|---|---|---|
| save | 900 | 1 |
| save | 300 | 10 |
| save | 60 | 10000 |
##不用save
dbfilename dump-${port}.rdb
dir /bigdiskpath ##比较大的硬盘
stop-writes-on-bgsave-error yes
rdbcompression yes
rdbchecknum yes
全量复制
debug reload
shutdown
| 时间戳 | save |
|---|---|
| t1 | 执行多个写命令 |
| t2 | 满足RDB自动创建的条件 |
| t3 | 再次执行多个写命令 |
| t4 | 宕机 |
就是每执行一个命令,就对应的命令记录到AOF里面,如果宕机,就从aof里面恢复
bgrewriteaof
aof重写配置
| 配置名 | 含义 |
|---|---|
| auto-aof-rewrite-min-size | aof文件重写需要的尺寸 |
| auto-aof-rewrite-percentage | aof文件增长率 |
| 统计名 | 含义 |
|---|---|
| aof_current_size | aof当前尺寸(字节) |
| aof_base_size | aof上次启动和重写的尺寸(字节) |
自动触发时机
aof_current_size > auto-aof-rewrite-min-size
aof_current_size – aof_base_size/aof_base_size>auto-aof-rewrite-percentage
配置
appendonly yes
appendfilename "appendonly-${port}.aof"
appendfsync everysec
dir /bigdiskpath
no-appendfsync-on-rewrite yes
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
| 命令 | RDB | AOF |
|---|---|---|
| 启动优先级 | 低 | 高 |
| 体积 | 小 | 大 |
| 恢复速度 | 快 | 慢 |
| 数据安全性 | 丢数据 | 根据策略决定 |
| 轻重 | 重 | 轻 |