redis学习文档

持久化

概念:利用永久性存储介质保存数据,在特定的时间将保存的数据进行恢复的工作机制

作用:防止数据意外丢失,备份恢复;远程创建数据副本

 

1. 持久化方式

  • RDB——数据快照:将内存中当前数据状态进行保存,快照形式,存储数据结果,存储格式简单。
  • AOF——过程日志:将数据的操作过程进行保存。日志形式,存储操作过程,存储格式复杂。

2中持久化方式既可以同时使用,又可以单独使用,或都不使用。

 

 

 

 

2. 快照持久化

 

2.1 配置选项

dbfilename dump.rdb

  • 设置磁盘上快照文件的名称,默认值为dump.rdb
  • 通常设置为:dump-端口号.rdb

 

dir

  • 设置存储.rdb文件的路径
  • 通常设置成存储空间较大的目录,目录名称data

rdbcompression yes

  • 设置是否对快照文件进行压缩。默认yes,使用LZF压缩
  • 默认开启状态,如果设置为no,可节省CPU运行时间,但会使存储文件变大

2.2 启动方式

save

客户端向Redis发送 save 命令来创建一个快照。在快照创建完毕前不会再响应其他命令,有可能造成长时间阻塞,线上环境不建议使用。

 

bgsave

客户端向Redis发送 bgsave 命令来创建一个快照。Redis会调用fork来创建一个子进程,由子进程负责将快照写入磁盘,而父进程则继续处理命令请求。

配置项:

  • stop-writes-on-bgsave-error yes(默认)——后台存储过程中如果出现错误情况是否停止保存操作。

 

save配置

config文件中设置了save配置选项,限定时间范围内key的变化数量达到配置的数量即进行持久化。如果设置了多个save配置选项,那么任意一个save配置选项所设置的条件被满足时,都会触发一次 bgsave 指令。

save second changes

  • second:监控时间范围
  • changes:监控key的变化量

其他

  • 全量复制
  • 关闭服务器——接收到 shutdown/term 命令,自动执行 save 命令

 

3. AOF持久化

3.1 配置选项

appendonly yes|no

  • 是否开启AOF持久化,默认不开启

 

dbfilename appendonly.aof

  • 设置磁盘上快照文件的名称,默认值为`appendonly.aof
  • 通常设置为:appendonly-端口号.rdb

 

dir

  • 设置存储.aof文件的路径,与rdb持久化文件一致即可

3.2 写入策略

appendsync

  • always——每个Redis写命令都要同步写入硬盘。会严重降低Redis的速度
  • everysec——每秒执行一次同步,显示地将多个写命令同步到硬盘(宕机丢失1s内数据)
  • no——让操作系统来决定何时进行同步,整个过程不可控

3.2 AOF重写

3.2.1 问题

  • Redis不断记录写命令,导致AOF文件越来越大。甚至占满整个磁盘空间
  • Redis重启通过重新执行AOF文件恢复数据,如果AOF文件非常大,还原时间就可能会非常长

 

3.2.2 重写方式

1. 手动重写

方式:用户向Redis发送 BGREWRITEAOF 命令,该命令通过移除AOF文件中的冗余命令来重写AOF文件。 原理:与 BGSAVE 创建快照原理相似,Redis会创建一个子进程,由子进程负责对AOF文件进行重写。

2. 自动重写

与快照持久化通过设置 save 选项自动执行 BGSAVE 一样,AOF持久化可以通过设置如下两个选项来自动执行 BGREWRITEAOF

  • auto-aof-rewrite-min-size size
  • auto-aof-rewrite-percentage percentage

示例:

当AOF文件的体积大于64MB,并且AOF文件的体积比上一次重写之后的体积大了至少一倍(100%)时,Rdis将自动执行 BGREWRITEAOF 命令。

  • auto-aof-rewrite-min-size 64mb
  • auto-aof-rewrite-percentage 100

 

4. RDB vs AOF

持久化方式RDBAOF
占用存储空间 小(数据级:压缩) 大(指令级:重写)
存储速度
恢复速度
数据安全性 会丢失数据 依策略决定
资源消耗 高/重量级 低/轻量级
启动优先级
posted @ 2022-03-21 10:11  zwbsoft  阅读(150)  评论(0编辑  收藏  举报