Redis服务器配置-RDB持久化

概述
  • RDB持久化功能可以将服务器包含的所有数据库数据以二进制文件的形式保存到硬盘里面
    在这里插入图片描述
  • 通过在服务器启动时载入 RDB 文件,服务器可以根据 RDB 文件的内容,还原服务器原有的数据库数据
    在这里插入图片描述
    缺点:
     将所有数据库的数据都保存起来,比较耗费资源和时间,所以需要服务器隔一段时间才创建一个新的RDB文件;如果在等待下一次RDB文件创建的过程中,服务器意外停机,用户将丢失最后一次创建RDB文件之后的数据
创建RDB文件

常见方式:

  • 服务器执行客户端发送的SAVE命令
  • 服务器执行客户端发送的BGSAVE 命令
  • 使用save配置选项设置的自动保存条件被满足,服务器自动执行BGSAVE

命令

  • SAVE命令
    通过客户端向服务器端发送SAVE命令,服务器会创建一个新的RDB文件
    在这里插入图片描述
    在执行SAVE命令的过程中,Redis服务器会被阻塞,无法处理客户发送的命令请求,只有在SAVE命令执行完成后,服务器才会重新开始处理客户端发送的命令请求
    如果RDB文件已经存在,服务器会自动使用新的REB文件去代替旧的RDB文件

    127.0.0.1:6379> save
    OK
    
  • BGSAVE 命令
    执行BGSAVE命令也会创建一个新的RDB文件,和SAVE的命令区别:BGSAVE不会造成Redis服务器阻塞,在执行BGSAVE命令过程中,Redis服务器仍然可以正常护理其他客户端发送的命令请求
    一个异步命令,发送命令的客户端会立即的到回复

    127.0.0.1:6379> bgsave
    Background saving started
    

    不会阻塞原因:
     1. 当 Redis 服务器接收到 BGSAVE 命令的时候,它不会自己来创建 RDB 文件,而是通过 fork() 来生成一个子进程,然后由子进程负责创建 RDB 文件,而自己则继续处理客户端的命令请求;
     2. 当子进程创建好 RDB 文件并退出时,它会向父进程(也即是负责处理命令请求的 Redis 服务器)发送一个信号,告知RDB 文件已经创建完毕;
     3. 最后 Redis 服务器(父进程)接收子进程创建的 RDB 文件,BGSAVE 执行完毕
    在这里插入图片描述
    在这里插入图片描述

  • SAVE和BGSAVE区别

命令SAVEBGSAVE
类型同步异步
是否服务器阻塞
复杂度O(N)O(N)
优点不需要创建子进程,不会消耗额外的内存,可以集中资源来创建RDB 文件,所以 SAVE 创建RDB 文件的速度会比 BGSAVE快Redis 服务器可以在创建 RDB 文件的过程中,仍然正常地处理客户端的命令请求
缺点执行期间会阻塞服务器需要创建子进程,会耗费额外的内存
  • 自动创建RDB文件
    通过save配置选项,格式为:
    save <seconds> <changes>
    
    如果距离上一次创建 RDB 文件已经过去了 seconds 秒,并且服务器的所有数据库总共已经发生了不少于 changes 次修改(包括添加、删除和更新),那么执行 BGSAVE
    样例:
    save 900 1
    save 300 10
    save 60 10000
    
    当其中一个条件被满足时,服务器就会执行BGSAVE
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值