Redis的持久化机制

tech2024-08-22  44

一、什么是Redis的持久化?

Redis是一种基于内存的非关系型数据库,其大部分的操作都直接在内存中执行,而内存中的数据是不能持久储存的,如果服务器宕机关闭会导致内存中的数据丢失,因此Redis就需要将内存中的数据持久化到磁盘中,便于长久的保存。

Redis提供了两种持久化的方式:

RDB(Redis DataBase)AOF(Append Only File)

二、RDB

1.什么是RDB:

RDB是Redis默认的持久化方法。按照一定的时间间隔将内存中的数据以快照的形式保存到磁盘中。Redis主进程会单独fork一个子进程来执行RDB持久化,整个过程中主进程不进行任何的IO操作,从而避免了对主进程造成性能的影响。在RDB持久化过程中,会先将数据写入一个临时的文件,等持久化结束后替换已持久化好的dump.rdb文件。

2.RDB默认的持久化配置:

save 900 1 # 如果在900秒内有1次改动(增删改),则保存到硬盘中 save 300 10 # 如果在300秒内有10次改动(增删改),则保存到硬盘中 save 60 10000 # 如果在60秒内有10000次改动(增删改),则保存到硬盘中

3.RDB触发条件:

满足save规则的情况下会触发RDB持久化执行flushall命令(清空整个 Redis 服务器的数据)退出redis

4.RDB的优缺点:

优点:

相比AOF,RDB适用于有比较大的据量的时候。性能最大化,通过fork子进程来完成持久化操作,对主进程的性能影响很小。

缺点:

需要一定的时间间隔进行操作,如果意外宕机会导致最后时间间隔内的的数据丢失。fork子进程的时候,会占用一定的内存空间

三、AOF

1.什么是AOF:

与RDB通过快照方式持久化不同,AOF是通过日志的形式来记录每个写操作的。在redis执行过程中,AOF会将所有写操作指令记录下来,追加到日志文件的末尾。默认每秒写入一次,配置文件中可设置成:每次修改都同步、每秒同步、不同步三种情况。

注:当两种持久化方式同时开启的时候,Redis的数据恢复会优先选择AOF进行恢复。

2.AOF的优缺点:

优点:

数据的完整性更好。相比于RDB,AOF可以将每条指令都记录下来,即使服务器意外宕机,也不会丢失数据。redis自带了修复工具redis-check-aof。即使AOF记录的指令出错,比如说记录的时候服务器宕机导致写入了不完整的数据,也能用redis-check-aof进行修复。

缺点:

AOF持久化文件比RDB文件大,恢复速度慢。数据量比较大的时候,AOF比RDB的启动效率更低。
最新回复(0)