Redis-面试

Redis是一个内存中的数据存储系统,通过RDB和AOF两种方式实现持久化,确保数据在系统重启后能够恢复。RDB会在特定时间点生成数据快照保存到磁盘,而AOF则记录所有写操作命令,当Redis启动时重新执行这些命令以还原数据。AOF重写可以优化存储效率,避免文件过大。
摘要由CSDN通过智能技术生成

Redis

🌞 如何保证Redis能永久保存数据

1️⃣ Redis 工作原理

2️⃣ Redis 持久化方案

⭕️ Redis 工作原理
Redis是以个key-value存储系统,他支持的value类型相对较多,包括string、list、set和zset,这些数据都支持push、pop/add/remove及交并补等操作,而且这些操作都是原子性的,在此基础上,Redis支持各种不同方式的排序。为了保证效率,数据是缓存在内存中的,Redis会周期性的把数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave同步
⭕️ Reids持久还-RDB
在Redis运行时,RDB程序将当前内存中的数据快照保存到磁盘中,当Redis需要重启时,RDB程序会通过重载RDB文件来还原数据库。

保存(rdbSave):
	rdbSever负责将内存中的数据库数据一RDB格式保存到磁盘中,如果RDB文件已经存在将会替换已有的RDB文件。保存RDB文件期间会阻塞主进程,这段时间期间将不能处理新的客户请求,知道保存完成为止。
	
读取(rabLoad):
	当Redis启动时,会根据配置的持久化模式,决定是否读取RDB文件,将其中的对象加载到内存中。
⭕️ Redis 持久化-AOF
以协议文本的方式,将所有对数据库进行的写入命令记录到AOF文件,达到记录数据库状态的目的。

AOF的保存
	1、 将客户端请求的命令转换网络协议格式。
	2、 将协议内容字符串追加到变量server.aof_buf中
	3、 当AOF系统达到设定的条件时,会调用aof_fsync(文件描述符号)将数据写入磁盘
	
	
AOF的读取
	1、 AOF保存的书数据协议格式的数据,所以只要将AOF中的数据转换为命令,模拟客户端重新执行一遍,就可以还原所有数据库状态。
	2、 创建模拟的客户端
	3、 读取AOF保存的文本,还原数据为原命令和原参数。然后使用模拟的客户端发送这个命令请求。
	4、 继续执行第二步,知道读取完AOF文件

AOF重写流程
	1、 APF重写完成会向主进程发送一个完成的信号
	2、 会将AOF重写缓存中的数据全部写入到文件中
	3、 用新的AOF文件,覆盖原有的AOF文件。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值