redis启动如何加载持久化数据
-
Redis启动时加载持久化数据的方式有两种:RDB持久化和AOF持久化。
- RDB持久化:
RDB持久化是Redis默认的持久化方式。它会将Redis的数据以二进制格式保存到磁盘上。当Redis重启后,可以通过读取磁盘上的RDB文件来恢复数据。
RDB持久化的加载过程如下:
- 当Redis启动时,会检查配置文件中是否开启了RDB持久化。配置文件中的
save选项可以用来设置触发RDB持久化的条件,例如在n秒内至少有m个key发生变化时进行持久化。 - 如果开启了RDB持久化且满足触发条件,Redis会调用
fork()函数创建一个子进程,然后由子进程来执行具体的RDB文件生成操作。 - 在数据写入RDB文件期间,Redis主进程可以继续处理客户端请求,而不会被阻塞。
- 当RDB文件生成完毕后,Redis会将文件的路径和总大小保存到
dump.rdb文件的头部。此时,可以选择将RDB文件移到指定的位置,然后重命名为dump.rdb,以替换原来的RDB文件。 - 当Redis重启时,它会自动加载最新的RDB文件,并将数据恢复到内存中。
- AOF持久化:
AOF持久化是另一种持久化方式,它会将Redis的每个写命令追加到一个append-only文件(AOF文件)中。当Redis重启后,可以通过重新执行AOF文件中的写命令来恢复数据。
AOF持久化的加载过程如下:
- 当Redis启动时,会检查配置文件中是否开启了AOF持久化。配置文件中的
appendonly选项用来设置是否开启AOF持久化。 - 如果开启了AOF持久化,Redis会在启动过程中,通过
appendonly.aof文件来重建数据集。 - Redis会将AOF文件中的写命令通过一个追加操作,以协议格式写入到文件末尾。
- 当Redis重启时,它会读取AOF文件,并将命令按照顺序重新执行,以恢复数据。
综上所述,Redis启动时加载持久化数据的方式主要有RDB持久化和AOF持久化。可以根据实际需求选择合适的持久化机制来保证数据的持久化和恢复。
1年前 - RDB持久化:
-
Redis是一种内存数据库,它将数据存储在内存中以提供高性能的读写操作。然而,如果Redis服务意外崩溃或重启,所有数据都会丢失。为了解决这个问题,Redis提供了持久化功能,可以将数据保存在磁盘上。
Redis提供了两种持久化方式:RDB(Redis DataBase)和AOF(Append Only File)。
- RDB持久化方式:
RDB是Redis默认使用的持久化方式。它将数据库保存到磁盘上的一个二进制文件中。当Redis需要进行持久化操作时,例如执行SAVE命令或配置了自动定时保存规则,Redis会将当前的数据库状态快照保存到RDB文件中。RDB文件是一个压缩的二进制文件,包含了数据库的键值对数据以及相关的元数据信息。
在启动Redis时加载RDB文件非常简单。只需在Redis配置文件中设置
dbfilename和dir两个参数,分别指定RDB文件的名称和路径。当Redis启动时,它会检查配置文件中是否设置了RDB文件路径,并将RDB文件加载到内存中。如果找不到RDB文件,Redis将以空数据库开始。- AOF持久化方式:
AOF持久化方式是将Redis的写操作以追加的方式写入日志文件中。写操作包括SET、DEL、INCR等命令。当Redis重启时,它可以通过重新执行AOF日志文件中的命令来恢复数据。与RDB方式相比,AOF方式更加安全,因为它可以提供更精确的数据恢复。
在启动Redis时加载AOF文件与加载RDB文件类似。只需在Redis配置文件中设置
appendonly参数为yes,表示开启AOF持久化功能。另外,还需要设置appendfilename和appendfsync两个参数,分别指定AOF文件的名称和同步方式。当Redis启动时,它会检查配置文件中是否开启了AOF持久化功能,以及AOF文件的路径,并将AOF文件加载到内存中。除了加载配置文件中设置的AOF文件外,Redis还支持对AOF文件进行重写(AOF Rewriting)操作。重写操作可以将AOF文件重新写入一个新的AOF文件中,去除冗余的命令,使AOF文件更加紧凑,提高性能。
综上所述,当Redis启动时,可以根据配置文件中设置的持久化方式来加载对应的持久化数据。对于RDB方式,加载RDB文件到内存中;对于AOF方式,加载AOF文件到内存中。加载完成后,Redis就可以恢复之前的数据库状态,并继续提供读写操作。
1年前 - RDB持久化方式:
-
在Redis中,有两种方式来实现数据的持久化,即RDB(Redis DataBase)和AOF(Append Only File)。在Redis启动时,可以选择加载已存在的持久化数据。
一、RDB持久化
RDB持久化是将Redis在内存中的数据保存到硬盘上的一个二进制文件中。在Redis启动时,可以通过加载RDB文件来将数据重新加载到内存中。-
创建RDB文件
在Redis的配置文件redis.conf中,有一个配置项save,用来配置触发RDB持久化的规则。可以根据需求来设置这个配置项,如save 900 1表示在900秒(15分钟)内如果有一条写入命令成功执行,则触发RDB持久化操作。
当Redis启动时,如果存在rdb文件,Redis会尝试加载这个文件。 -
加载RDB文件
Redis启动时,会首先检查配置文件中是否设置了appendonly yes,如果设置了,那么会检查是否存在AOF文件,如果存在,则优先加载AOF文件;
如果没有设置appendonly yes或者不存在AOF文件,那么会检查是否存在RDB文件,如果存在,则加载RDB文件。
二、AOF持久化
AOF持久化是通过将Redis收到的每一条写命令追加到文件末尾,用于记录数据更改的持久化方式。在Redis启动时,可以加载AOF文件来将数据重新加载到内存中。-
创建AOF文件
在Redis的配置文件redis.conf中,有一个配置项appendonly,用来控制是否启用AOF持久化。默认情况下,这个配置项是关闭的。
如果将appendonly设置为yes,则在每个写命令执行完毕后都会将命令写入到AOF文件中。 -
加载AOF文件
Redis启动时,会首先检查配置文件中是否启用了AOF持久化,即是否设置了appendonly yes。如果启用了AOF持久化,那么会检查是否存在AOF文件,如果存在,则加载AOF文件。
总结:
在Redis启动时,首先会检查是否启用了AOF持久化,如果启用了,则加载AOF文件;如果没有启用AOF持久化或者AOF文件不存在,那么会检查是否存在RDB文件,如果存在,则加载RDB文件。通过这种方式,可以保证在Redis启动时,能够加载已存在的持久化数据,使数据在重启后不会丢失。1年前 -