面试题【Redis持久化】

持久化方式

RDB

RDB方式是通过快照完成,以二进制的方式保存到磁盘。

当符合一定条件时Redis会自动将内存中的所有数据进行快照,并存储到硬盘上。

快照条件

条件由两个参数构成:时间和改动的键值个数。即在指定时间内被改动的键的个数大于执行数值时,就会进行快照。这是Redis的默认持久化方式。

这里写图片描述

设置

可以设置RDB文件的存储路径以及文件名。

使用场景

Redis在启动后会读取快照文件,将数据从磁盘载入到内存中。

具体操作

  1. 当快照条件满足时
  2. redis会调用系统函数fork(),创建一个子进程
  3. 子进程会将数据集写入到一个临时文件
  4. 临时文件写完后,会替换原旧rdb文件

快照方式

自动快照(开启子进程执行),主动快照(可发送命令SAVE或BGSAVE,让Redis主动进行快照。会占用当前主进程,阻塞其他请求)

优点

  1. 非常适合备份和灾难恢复
  2. 在恢复数据时速度快于AOF

缺点

  1. 假如5分钟才触发条件,进行数据存盘。如果在未触发提交时,机器发生故障,数据就会丢失。
  2. 当数据量过大时,进行快照,可能会耗时

原文

https://www.cnblogs.com/xiaolovewei/p/9038220.html

AOF

将所有对数据库进行操作的命令记录到AOF文件

保存模式

  • Always:服务器每写入一个命令,就将缓存区中的命令写入磁盘
  • Everysec:缓存区中的命令,服务器每秒写入磁盘(默认)
  • No:服务器不主动写入

优点

数据基本不会丢失

缺点

  • aof文件会越来越大
  • 通过aof文件恢复数据会很慢(每个命令都会被执行)

混合型持久

redis4后的版本支持

结合RDB和AOF的优点,快速加载数据并避免丢失过多数据。

混合持久化默认是关闭的。

具体执行过程:fork出的子进程,先将内存数据全量写入aof文件,再将缓存区的命令以增量的形式追加到aof文件。执行完成后,替换旧的aof文件。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值