面试整理-redis持久化

目录

一、redis配置文件

二、持久化之RDB(Redis DateBase)

三、持久化之AOF(append only file)


一、redis配置文件

redis启动时通过配置文件redis.conf启动

1. include

可以通过include包含多组配置文件

2. 网络配置

ip绑定;端口绑定(默认6379)

3. 日志输出文件

默认输出级别logleve notice;日志文件名logfile;数据库默认数量16个

4. rdb持久化规则

持久化文件:dump.rdb

save 900 1 //默认900秒内至少1个key发生变化,则重写rdb文件

save 300 10

save 60 10000

5.aof持久化规则

appendonly no //默认不开启aof模式;默认使用rdb方式持久化;

appendsync ways(每次修改都会同步)/everysync(默认每秒执行一次同步)/no

6.显示clients

reids链接对大数量;内置最大内存大小;

内存大小达到限制值的默认处理策略:volatile-lru(删除设置了过期时间的key中最近没有使用的)

...

二、持久化之RDB(Redis DateBase)

1. 什么是RDB?

在指定的时间间隔后,将将内存中的数据集快照写入数据库,在恢复的时候,直接读取快照文件dump.rdb进行恢复

2. RDB的触发方式

a. 手动触发

执行save函数和bgsave函数会生成rdb操作

save命令执行后同步执行rdb保存操作,将当前rdb实例中所有的数据快照(snapshot),以rdb文件的方式保存到磁盘;save同步主进程,只有等save完成后,才能进行新的操作

bgsave命令执行后,redis会fork一个子进程,原来的主进程继续后续的操作。子进程负责把数据保存到磁盘中,然后退出;bgsave会fork子进程,非阻塞,执行完成后通知主进程,然后关闭子进程

b. 自动触发(最常见)

自动触发是最常见的情况,配置文件redis.conf中配置的 save m n,默认是save 900 1

3. 触发机制

a. redis.conf配置文件中save m n 规则满足时,会自动触发rdb规则

b. 执行flushall命令时,会触发rdb规则

c. 退出redis时,会触发rdb规则,自动生成rdb文件

4. RDB持久化原理(自动触发)

在进行RDB的时候,主线程是不进行IO操作,会fork一个子进程来完成该操作;

a. redis内部的定时器,每隔100秒执行一次,检查save m n条件是否满足,满足的话执行bgsave

b. 执行bgsave命令后,redis会通过操作系统fork一个子进程

c. 子进程先把数据写入一个临时的rdb文件,待持久化结束后,再用新的rdb文件替换旧的rdb文件

整个过程子进程进行写操作,父进程依旧可以接受客户端的请求(写时复制机制,高效)

写时复制机制(copy on write)

redis主线程通过操作系统fork出线程的同时,父子进程共享内存空间,父进程的内存页权限被设置为read-only,当父进程要写操作时,主进程会把该数据页数据复制一份,父子进程共有。并且该数据页新内存地址为copy出来的数据页地址,进而进行write操作,与子进程的rdb操作互不影响。

5. RDB的优缺点

优点:适合大规模数据恢复;对数据的完整性要求不高

缺点:redis宕机导致最后一次的修改数据没有了;fork子进程需要占内存空间

三、持久化之AOF(append only file)

1. 什么是AOF

把所有的redis写操作命令都记录在appendonly.aof文件中,只追加不修改,redis重启恢复数据时执行一遍aof文件即可。

2. 如何开启AOF

rdb会在宕机时丢失最后一次数据,因此实际线上环境会同时开启rdb和aof

在redis.conf配置文件中设置开启aof即可

3. AOF的优缺点

优点:每次修改都偶会同步,文件完整性较好

缺点:数据文件比aof比rdb大很多,修复速度慢,因此redis默认使用rdb持久化

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值