redis-持久化
testted123456
Posted on September 4, 2022
一、RDB快照持久化
在指定时间间隔将内存数据写入磁盘,默认持久化方式
触发方式
1. 执行save和bgsave命令
2. 配置文件设置save <seconds> <changes>规则,自动间隔性执行bgsave命令
3. 主从复制时,从库全量复制同步主库数据,主库会执行bgsave
4. 执行flushall命令清空服务器数据
5. 执行shutdown命令关闭Redis时,会执行save命令
save命令
save会阻塞redis进程,再快照创建完之前不能出来其他请求bgsave命令
bgsave不会阻塞redis进程,会fork出一个进程把全量数据写入临时rdb文件,再替换正式rdb文件
配置文件自动触发bgsave
# 900秒内有1次key改变则触发
save 900 1
# 300秒内有10次key改变则触发
save 300 10
# 60秒内有10000次key改变则触发
save 60 10000
- 优点:
RDB快照是一个压缩过的非常紧凑的文件,保存着某个时间点的数据集,适合做数据的备份,灾难恢复
可以最大化Redis的性能,在保存RDB文件,服务器进程只需fork一个子进程来完成RDB文件的创建,父进程不需要做IO操作
与AOF相比,恢复大数据集的时候会更快
- 缺点:
RDB的数据安全性是不如AOF的,保存整个数据集的过程是比繁重的,根据配置可能要几分钟才快照一次,如果服务器宕机,那么就可能丢失几分钟的数据
Redis数据集较大时,fork的子进程要完成快照会比较耗CPU、耗时
二、AOF持久化
# appendonly参数开启AOF持久化
appendonly no
# AOF持久化的文件名,默认是appendonly.aof
appendfilename "appendonly.aof"
# AOF文件的保存位置和RDB文件的位置相同,都是通过dir参数设置的
dir ./
# 同步策略(always/everysec/no)
appendfsync everysec
# aof重写期间是否同步
no-appendfsync-on-rewrite no
# 重写触发配置
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
# 加载aof出错如何处理
aof-load-truncated yes
# 文件重写策略
aof-rewrite-incremental-fsync yes
# 同时开启rdb、aof
aof-use-rdb-preamble yes
- append命令
开启aof,每个执行一个命令,都会把该命令以协议格式先追加到aof_buf缓存区的末尾,而不是直接写入文件,避免每次有命令都直接写入硬盘,减少硬盘IO次数
aof_buf写入aof策略:
appendfsync always:
将aof_buf缓冲区的所有内容写入并同步到AOF文件,每个写命令同步写入磁盘
appendfsync everysec:
将aof_buf缓存区的内容写入AOF文件,每秒同步一次,该操作由一个线程专门负责
appendfsync no:
将aof_buf缓存区的内容写入AOF文件,什么时候同步由操作系统来决定
- rewrite命令
随着时间推移,aof文件会越来越大,rewrite就是为了缩小aof文件的大小
rewrite不是读取aof文件,而是读redis生成新的aof文件替换老的aof文件
redis-7会把数据保存到aof目录下的rdb中,同时清空aof文件
命令触发
# fork出一个进程来执行,服务器继续执行命令,且最加到aof_buf、
# aof_rewrite_buf
127.0.0.1:6379> bgrewriteaof
- 自动触发 配置文件:
# 当AOF文件的体积大于64MB,且AOF文件的体积比上一次重写后的体积大了一倍(100%)时,会执行`bgrewriteaof`命令
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
- 优点:
数据更完整,安全性更高,秒级数据丢失(取决fsync策略,如果是everysec,最多丢失1秒的数据)
AOF文件是一个只进行追加的日志文件,且写入操作是以Redis协议的格式保存的,内容是可读的,适合误删紧急恢复
- 缺点:
对于相同的数据集,AOF文件的体积要大于RDB文件,数据恢复也会比较慢
根据所使用的 fsync 策略,AOF 的速度可能会慢于 RDB。 不过在一般情况下, 每秒 fsync 的性能依然非常高
Posted on September 4, 2022
Join Our Newsletter. No Spam, Only the good stuff.
Sign up to receive the latest update from our blog.
Related
November 29, 2024