Redis的持久化策略

Redis提供了两种持久化策略: RDBAOF

1 RDB持久化 - 默认持久化方式

1.1.1. 快照文件名称设置

通过 redis.conf 中的 dbfilename 设置
默认值: dbfilename “dump.rdb”

1.1.2. 快照文件存放位置

通过 redis.conf 中的 dir 设置
默认值: dir ./ 表示在redis的安装目录

1.1.3. 快照(RDB持久化)策略配置
save 900 1     900秒内至少有一个key被改变就自动触发RDB持久化
save 300 10   300秒内至少有10个key被改变就自动触发RDB持久化
save 60 10000 60秒内至少有10000个key被改变就自动触发RDB持久化

增加5秒内有一个可以被修改就触发RDB持久化
save 4 1

27329:M 24 Oct 2020 11:50:01.920 * 1 changes in 4 seconds. Saving…
27329:M 24 Oct 2020 11:50:01.921 * Background saving started by pid 27359
27359:C 24 Oct 2020 11:50:01.923 * DB saved on disk
27359:C 24 Oct 2020 11:50:01.924 * RDB: 4 MB of memory used by copy-on-write
27329:M 24 Oct 2020 11:50:02.022 * Background saving terminated with success

1.2. RDB持久化过程

RDB持久化是Redis定期将内存中的 数据集快照 写入磁盘,实际操作过程是创建一个子
进程,先将数据集写入临时文件,写入成功后,再替换之前的文件,用二进制压缩存储,
整个过程 主进程 不进行任何IO操作,保证Redis的高效性。

1.3. RDB持久化的触发方式

分为自动触发手动触发

1.3.1. 自动触发:从redis.conf中配置

默认配置

save 900 1     900秒内至少有一个key被改变就自动触发RDB持久化
save 300 10   300秒内至少有10个key被改变就自动触发RDB持久化
save 60 10000 60秒内至少有10000个key被改变就自动触发RDB持久化
1.3.2 手动触发
  • save

执行此命令会阻塞Redis服务器,执行命令期间,Redis不能处理其它命令,
直到RDB过程完成为止。
执行日志如下
27329:M 24 Oct 2020 11:54:22.134 * DB saved on disk

  • bgsave
    执行该命令时,Redis会在后台异步进行快照操作,做快照的同时还可以响
    应客户端请求;此时Redis主进程执行fork操作创建子进程,RDB持久化过程由子
    进程负责,完成后自动结束。阻塞只发生在fork阶段,一般时间很短。
    执行日志如下:
27329:M 24 Oct 2020 11:54:42.069 * Background saving started by pid 27367 
27367:C 24 Oct 2020 11:54:42.077 * DB saved on disk 
27367:C 24 Oct 2020 11:54:42.077 * RDB: 4 MB of memory used by copy-on- write 
27329:M 24 Oct 2020 11:54:42.162 * Background saving terminated with success

2.AOF持久化

AOF持久化以日志的形式记录服务器所处理的每一个写、删除操作,查询操作不会记
录,以文本的方式记录,可以打开文件看到详细的操作记录。

2.1.1 aof文件名称设置

使用redis.conf中的appendfilename设置
默认设置:appendfilename "appendonly.aof"

2.1.2 如何开启aof持久化

使用 redis.conf 中的 appendonly yes 设置
默认设置: appendonly no 表示不开启aof持久化

2.1.3 aof文件存放位置

通过 redis.conf 中的 dir 设置
默认值: dir ./表示在redis的安装目录

2.2.1Redis支持三种同步AOF文件的策略

通过redis.conf中的 appendfsync设置

no : 不进行同步,依靠操作系统来进行同步. Faster. always : always表示每次有写操作都进行同步. Slow, Safest. everysec : 表示对写操作进行累积,每秒同步一次. Compromise.
默认是"everysec",按照速度和安全折中这是最好的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值