前言
面试大概九十分钟,问的东西很全面,需要做充足准备,就是除了概念以外问的有点懵逼了。回来之后把这些题目做了一个分类并整理出答案(强迫症的我~狂补知识)分为MySQL+Java+Redis+算法+网络+Linux等六类,接下来分享一下我的这次阿里一面面经+一些我的学习笔记。
什么是Redis的持久化
我们知道Redis的数据都存储在内存中,如果服务器突然宕机,那么内存数据将会全部消失,为了防止这种情况出现,利用一套机制来保证数据不会因为故障而丢失,我们将这种机制称之为Redis的持久化机制,该机制主要目的是将内存数据存入到硬盘中
Redis 提供两种持久化机制RDB(Redis DataBase)和AOF(Append-Only File)机制。
RDB-快照
快照是最简单的Redis持久化模式,也就是生成某个时间点的数据集,生成RDB文件,可以看到RDB文件中的数据是非常紧凑的,所以在恢复数据的时候读取也是非常快的
触发RDB快照的方式有两种
手动触发
通过手动执行bgsave/save,显示触发生成快照
-
save命令:阻塞当前Redis服务器,直到RDB过程完成为止,对于内存 比较大的实例会造成长时间阻塞,线上环境不建议使用
-
bgsave命令:Redis进程执行fork操作创建子进程,RDB持久化过程由子 进程负责,完成后自动结束。阻塞只发生在fork阶段,一般时间很短
配置参数自动触发
自动触发有以下几种情况:
- 使用save相关配置,命令save m n。表示m秒内数据集存在n次修改时,自动触发bgsave
- 从节点执行全量复制操作,主节点自动执行bgsave生成RDB文件发送给从节点
- 执行debug reload命令重新加载Redis时,自动触发save命令
- 执行shutdown命令时,如果没