Redis的持久化
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要慢的多。
- redis持久化策略梳理及主从环境下的策略调整记录
- redis整理の持久化机制
- 【Redis缓存机制】9.快照持久化和AOF持久化
- 深入学习Redis(2):持久化
- redis持久化RDB和AOF
- 07_NoSQL数据库之Redis数据库:Redis的高级应用之事务处理、持久化操作、pub_sub、虚拟内存
- Redis 设计与实现 (三)--持久化
- Redis持久化(RDB和AOF)
- Redis持久化
- NoSQL之Redis---持久化(persistence)示例
- redis 持久化
- 理解Redis持久化
- Redis学习(五)Redis的持久化
- Redis持久化
- 深入解读 Redis 的持久化
- redis启用持久化
- Redis的AOF持久化(二)
- redis学习笔记之持久化
- NoSQL数据库之Redis数据库管理六(Redis的高级应用之事务处理、持久化操作、pub_sub、虚拟内存)
- Redis的RDB持久化和AOF持久化