ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Redis是如何持久化的?

Redis是如何持久化的? Redis持久化Redis的数据是存储在内存中的这意味着如果Redis服务器突然关闭或重启内存中的数据会丢失。为了解决这个问题Redis提供了持久化功能即把内存中的数据保存到硬盘上以便在服务器重启后能够恢复数据。持久化方式Redis提供了两种主要的持久化方式RDBRedis DataBase这种方式会定期生成数据快照并保存到硬盘上。你可以想象成是定期给Redis内存中的数据拍一张照片并保存下来。AOFAppend Only File这种方式会记录每一个写入Redis的命令并把这些命令追加到一个文件中。就像是我们写日记把每一天发生的事情都记录下来。底层原理RDBRedis会在指定的时间间隔内如果满足一定数量的写操作就会触发一次快照保存。当触发快照保存时Redis会fork出一个子进程由子进程来生成数据的快照并保存到硬盘上这样主进程还可以继续处理客户端的请求不会被阻塞。快照文件是一个紧凑的二进制文件表示Redis在某个时间点的完整数据状态。AOF每当Redis执行一个写命令如SET、HSET等这个命令就会被追加到AOF文件的末尾。AOF文件实际上是一个日志文件记录了Redis的所有写操作。与RDB不同AOF是实时的也就是说每执行一个写命令就会立即记录到AOF文件中。如果Redis服务器重启它会重新执行AOF文件中的命令来恢复数据。通俗的解释想象你有一个非常宝贵的日记本Redis数据但你担心如果丢失或损坏就再也找不回来了。于是你想了两种方法来备份这个日记本拍照备份RDB你每隔一段时间就给日记本拍一张照片并保存起来。这样即使日记本丢失了你也可以通过照片来恢复它到拍照时的状态。但这种方法有个缺点就是如果你刚好在拍照后写了一些重要的内容然后日记本丢失了那么这些内容就无法恢复了。复制每一句话AOF你决定把在日记本上写的每一句话都复制到另一张纸上并保存起来。这样即使日记本丢失了你也可以通过重新写一遍那些复制下来的句子来恢复整个日记本的内容。这种方法的优点是它可以恢复到丢失前的最后一个状态但缺点是那张纸可能会变得非常长而且每次写日记都要复制一句话也比较麻烦。
返回列表