Redis中两种持久化机制RDB和AOF(面试常问,工作常用)

目录

1、持久化流程

2、RDB(Redis DataBase)

3、AOF(Append Only File)


1、持久化流程

持久化一般来说就是指将数据写入磁盘永久保存(持久化 -- 写磁盘)。以下为持久化的主要流程:

(1)客户发送数据。客户端向服务端发送写操作(数据在客户端的内存中)。

(2)服务器接收数据。数据库服务端接收到写请求的数据(数据在服务端的内存中)。

(3)服务器写数据(缓冲区)。服务端调用write这个系统调用,将数据往磁盘上写(数据在系统内存的缓冲区中)。

(4)服务器写数据(磁盘缓存)。操作系统将缓冲区中的数据转移到磁盘控制器上(数据在磁盘缓存中)。

(5)服务器写数据(磁盘)。磁盘控制器将数据写到磁盘的物理介质中(数据真正落到磁盘上)。

 

  • 前三步主要由客户端和服务端的通信、redis数据库完成;
  • 从第四步开始,主要是操作系统完成。

redis如何来实现上面5个保存磁盘的步骤。它提供了两种策略机制,也就是RDB(Redis DataBase)和AOF(Append Only File)


2、RDB(Redis DataBase)

一句话:把数据以快照的形式保存在磁盘上。

RDB持久化是指在指定的时间间隔内将内存中的数据集快照写入磁盘。也是默认的持久化方式,这种方式是就是将内存中数据以快照的方式写入到二进制文件中,默认的文件名为dump.rdb。

在我们安装了redis之后,所有的配置都是在redis.conf文件中,里面保存了RDB和AOF两种持久化机制的各种配置。

如何触发?既然RDB机制是通过把某个时刻的所有数据生成一个快照来保存,那么就应该有一种触发机制,是实现这个过程。对于RDB来说,提供了三种机制:

  • save
  • bgsave
  • 自动化

具体参见文章:https://baijiahao.baidu.com/s?id=1654694618189745916&wfxingr=spider&for=pc


3、AOF(Append Only File)

一句话:将写命令记录。形成文件。

全量备份总是耗时的,有时候我们提供一种更加高效的方式AOF,工作机制很简单,redis会将每一个收到的写命令都通过write函数追加到文件中。通俗的理解就是日志记录。

如何触发

  • always:同步持久化 每次发生数据变更会被立即记录到磁盘 性能较差但数据完整性比较好
  • 每秒同步everysec:异步操作,每秒记录 如果一秒内宕机,有数据丢失
  • 不同no:从不同步

具体同上参考

你可能感兴趣的:(Redis,面经,Java基础知识)