Redis持久化的两种方式

本文介绍了Redis的两种持久化方式:RDB(快照)和AOF(追加日志)。RDB在特定条件下生成数据快照,适合灾难恢复,但可能丢失部分数据;AOF记录每次操作日志,数据安全性高,但文件体积可能较大。AOF提供不同的同步策略以平衡性能和安全性。Redis还可以采用混合方式,结合RDB和AOF的优点。
摘要由CSDN通过智能技术生成

前言

Redis是一种K-V数据库,它的数据也可以进行持久化操作。因为redis的数据都保存在内存中,如果不进行及时的持久化,可能就会因为重启导致数据的丢失。这时候就需要对redis进行持久化操作,将数据保存在磁盘上。

redis提供了两种持久化方式,分别是AOF和RDB。下面分别对这里持久化方式进行解析。

1.RDB

RDB是将redis 的数据生成快照保存在磁盘上。

RDB有多种实现方式,分别如下:

  1. 执行save或bgsave命令。save命令会阻塞redis,此时不会响应客户端发送的请求直到RDB文件执行完成,所以一般不推荐使用。bgsave会创建子进程,由子进程完成数据快照,不会阻塞父进程。
  2. 根据配置文件的save m n规则进行快照。
  3. 主从复制时,从库全量复制同步主库数据,此时主库会执行bgsave命令进行快照;
  4. 客户端执行数据库清空命令FLUSHALL时候,触发快照;
  5. 客户端执行shutdown关闭redis时,触发快照;

bgsave命令的工作流程如下:

  1. 执行bgsave命令,redis父进程判断当前是否存在子进程如AOF\RDB子进程,如果存在说明正在备份,直接返回。

  2. 父进程进行fork创建子进程,此时redis父线程被阻塞。

  3. 子进程创建完成,bgsave返回“* Background saving started by pid xxx”信息,并不再阻塞父进程,可以继续响应其他命令。

  4. 子进程进程创建RDB文件,根据内存生成临时快照文件,完成后对原有文件进行原子替换。

  5. 进程发送信号给父进程表示完成,父进程更新统计信息。

save m n规则

save m n规则表示每隔m秒,redis中有n个键改变则自动触发bgsave,在redis.conf文件中可以进行配置,并且可以组合使用。

RDB持久化配置:

save m n
#配置快照(rdb)促发规则,格式:save <seconds> <changes>
#save 900 1  900秒内至少有1个key被改变则做一次快照
#save 300 10  300秒内至少有300个key被改变则做一次快照
#save 60 10
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值