您的位置:首页 > 数据库 > Redis

Redis的持久化

2020-07-16 04:56 141 查看

Redis的持久化问题

Redis的数据都是存在在内存之中的,那么这样一旦出现宕机,势必会导致数据的丢失,这就需要持久化操作,也就是要将redis在内存中的数据写到硬盘上保存。

注意,redis虽然有持久化操作,但是其全部数据依旧都在内存中存在,也就是说硬盘上的只是为了安全和备份

Redis提供了两种数据持久化的方式,分别是RDB和AOF

RDB(Redis DataBase)

这是Redis默认的持久化方案。

它通过配置文件来设定一些条件,一旦当条件满足时,redis就会触发RDB快照机制,将当前时刻redis在内存中的数据全部持久化到磁盘的一个文件中。

条件配置

save 900 1
save 300 10
save 60 10000

工作机制指定

当RDB持久化条件满足时,Redis会创建一条子线程专门负责数据的持久化(将内存中的数据写到磁盘中),这个过程中Redis会创建一个新的RDB备份文件,而不会改变原有的RDB文件。当新的RDB文件备份完毕后,Redis会用新的替换旧的文件。
Redis的主要工作是类似缓冲区一样的功能,将数据保存到内存中,而非持久化,所有在不影响Redis工作的情况下,会创建子线程去负责持久化

AOF(Append Only File)

此持久化方式是默认关闭的

它采用日志的形式来记录Redis的每个写操作,并追加到文件中。Redis 重启的会根据日志文件的内容将写指令从前到后执行一次以完成数据的恢复工作。

AOF就是redis会记录每次的写操作。但是写操作一般都是有缓冲的,不会立即写入磁盘,但是可以通过调用系统的fsync()函数强制写入。根据这一特性,redis提供了一个配置来决定什么时候来调用系统的fsync()函数.

appendfsync always
appendfsync everysec
appendfsync no

还是刚才的配置文件

工作机制

AOF就是记录每次redis的写操作,然后通过指定的条件将记录下来的操作写到磁盘文件中。

两者比较

RDB使用快照机制保存数据,也就是它的备份文件一定是某一时刻的完整数据,这种文件比较适合做备份使用。但是Redis一旦宕机,就会丢失最后一次快照之后的数据。
AOF可以通过控制刷新模式最大程度的保证数据完整性,但是相同量的数据,AOF的备份文件要远大于RDB,而且做数据回复的时候比RDB要慢的多。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: