Redis 七 持久化

1、 Redis 是一个支持持久化的内存数据库,将内存中的数据保存到磁盘中,重启的时候可以再次加载进行使用。
    两种持久化方式:1)RDB快照(默认) 2)AOF日志 
2、 RDB快照 (Redis DataBase) 
    1)在指定的时间间隔内,将内存中的数据集快照写入磁盘
    2)默认方式是将 Reids 在内存中的数据集定时 dump 到磁盘上,文件是 dump.rdb 
    3)实际操作过程是 fork 一个子进程,先将数据集写入临时文件,写入成功后替换之前的文件,用二进制压缩存储
    一句话概括:子进程现将内存中的数据集快照dump到临时文件,写入成功后替换之前的文件
3、 AOF日志 (Append Only File)
    1)AOF 是以日志的形式记录服务器所处理的每一个写入、删除操作,查询操作不会记录
    2)原理是将 Redis 的操作日志以追加的方式写入文件。 Redis 服务器启动之初会读取该文件,重新构建数据库,以保证启动后数据的完整性
    3)以文本的方式记录,打开文件可以看到详细的操作记录
    4)在redis的配置文件中设置appendonly yes,此时rdb方式自动失效
    5)如果 AOF 文件出现异常,Redis 在重启的时候将会拒绝加载,从而保证数据的一致性。 AOF 文件修复命令:redis-check-aof -fix
4、 RDB快照的优缺点:
    优点:1)RDB 是紧凑的二进制文件 2)适合备份,全量复制等场景 
    缺点:1)RDB 无法实现实时或者秒级持久化 2)新老版本无法兼容 
5、 AOF日志优缺点:
    优点:1)可以更好地保护数据不丢失 2)append-only 模式写入性能比较高 3)适合做灾难性误删除的紧急恢复
    缺点:1)对于同一份文件,AOF 日志要比 RDB 快照大
          2)AOF 开启后会对写的 QPS(Query Per Second,每秒查询率) 有所影响,相对于 RDB 来说写 QPS 要下降
          3)数据库恢复比较慢,不合适做冷备    
6、 RDB 和 AOF 的区别:
    1)持久化方式不同:RDB是快照方式,二进制文件。AOF是日志方式,文本文件
    2)数据完整性:RDB 可能会引起一定程度的数据丢失,AOF 不会造成数据丢失。如果对数据的完整性要求不高 RDB 是最好的解决方案,反之选择 AOF
    3)RDB 启动效率更高,RDB 恢复数据远快于 AOF
    4)AOF 占用的空间比 RDB 大
    5)AOF 的同步速度比 RDB 慢
7、 Redis 持久化命令:
    1)SAVE 直接调用 Redis 持久化函数 rdbSave ,阻塞 Redis 主进程,直到保存完成为止,在主进程阻塞期间,服务器不能处理客户端的任何请求
        如:save 900 1        900秒内有超过1个key被修改就快照保存
    2)BGSAVE 会创建一个子进程负责调用 rdbSave 函数,并在保存完成之后向主进程发送完成信号,Redis 服务器在 BGSAVE  执行期间仍然可以继续处理客户端的请求

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值