当前位置:   article > 正文

Redis持久化的两种方式_redid的两种持久化

redid的两种持久化

前言

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 
  • 1
  • 2
  • 3
  • 4
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小小林熬夜学编程/article/detail/547317
推荐阅读
相关标签
  

闽ICP备14008679号