Redis持久化机制(AOF+RDB)
为什么要持久化?
Redis是内存数据库,数据保存在内存中。一旦服务器退出, Redis中的数据就会消失。所以Redis提供了持久化技术将内存中的数据保存到磁盘。 Redis提供了两种持久化技术,RDB和AOF
RDB持久化方式:
通过创建快照的方式,将某个时间段内存中数据保存在RDB文件中, RDB文件是一个压缩的二进制文件。
RDB文件是保存在磁盘上的,所以不管Redis服务器退出,只要磁盘上的RDB文件存在,Redis服务器就可以使用它来还原数据库的状态。
RDB文件的创建
使用SAVE和BGSAVE命令 SAVE:阻塞Redis服务器进程,直至RDB文件创建完毕 BGSAVE:会派生一个子进程,由子进程来创建RDB文件,父进程继续处理其它令
自动间隔性保存:
因为BGSAVE命令在创建快照的时候Redis服务器不会阻塞, 所以可以配置SAVE选项,让服务器每隔一段时间就执行一次BGSAVE命令。 可以通过配置SAVE选项来保存多个条件,只要一个满足, 服务器就会执行BGSAVE命令来创建快照。 在redis.conf文件中配置 save 900 1 服务器在900秒内对服务器进行了一次修改,就会创建RDB文件
RDB文件的载入
在Redis服务器启动的时候检测到有RDB文件的存在,就会自动载入RDB文件, 来还原数据库的状态。
如果只使用RDB创建快照来持久化保存数据时,如果系统真的发生崩溃,用户将丢失最近一次生成快照之后更改的所有数据。
RDB是保存数据库中的键值对来记录数据库状态。
AOF持久化方式:
AOF通过保存Redis数据库执行的写命令来记录数据库状态的。AOF持久化会将Redis的写命令写到AOF文件的末尾。
AOF文件的写入和同步
为了提高文件的写入效率,都会将数据先写入到缓存当中。这样虽然效率提高,但是写入数据带来了安全问题,如果计算机发生停机,缓存中的数据可能会丢失。
可以通过设置appendfsync选项的值来决定AOF持久化的效率和数据安全
appendfsync的参数设置 always:将缓冲区的所有内容写入并同步到AOF文件,安全性最高,效率最低 everysec:每秒执行一次同步 no:何时进行同步,由操作系统来决定
Redis载入AOF文件进行数据还原
AOF文件的重写和压缩
虽然AOF持久化可以将丢失数据的时间降低至一秒(甚至不丢失数据),又可以在极短的时间内完成数据的持久化。但是因为Redis会不断的将执行的写命令记录到AOF文件里面,随着Redis的不断运行,AOF文件也会也来越大。Redis在重启之后需要通过执行AOF文件记录的所有写命令来还原数据库,如果AOF文件过大,还原的时间可能会非常的长。
为了解决AOF文件不断增大的问题,可以通过移除AOF文件冗余命令来重写AOF文件,使得AOF文件的体积变得尽可能的小。Redis会创建子进程,由子进程来负责对AOF文件的重写。服务器进程继续来处理命令。使用子进程不使用线程,可以保证数据的安全。
AOF重写缓冲区
在子进程进行AOF文件重写的时候,服务器进程还会继续处理命令, 新的命令可能会对数据库状态进行修改。可能会使得服务器当前的数据状态 和重写后的AOF文件所保存的数据库状态不一致。
为了解决数据不一致的问题,Redis服务器设置了一个AOF文件重写的缓冲区。这个缓冲区在创建子进程重写AOF文件后开始使用,当Redis服务器执行完写命令的之后,会同时将这个写命令发送给AOF和AOF重写缓冲区。
这样一来可以保证:
AOF缓冲区中的内容会被定期的写入和同步到AOF文件 从创建子进程开始,服务器执行的所有写命令会记录到AOF重写缓冲区
子进程完成AOF文件重写之后,会向父进程发送信号,父进程会
将AOF重写缓冲区的所有内容写入到新的AOF文件, 这时候AOF文件的数据库状态和服务器一致 对新的AOF文件进行改名,原子地覆盖现有的AOF文件
阅读更多
- 分析redis的RDB和AOF两种持久化机制的工作原理
- redis数据备份的两种机制rdb aof
- 【redis源码分析】RDB持久化机制
- Redis 持久化数据方式 RDB AOF
- Redis提供的持久化机制(RDB和AOF)
- Redis--RDB机制和AOF机制持久化以及数据备份
- redis持久化,rdb,aof
- Redis的持久化机制RDB与AOF
- Redis——持久化机制(RDB和AOF)
- Redis入门之浅谈rdb持久化机制
- Redis提供的持久化机制(RDB和AOF)
- Redis RDB AOF持久化方式
- redis 持久化rdb aof 简介
- Redis 持久化 RDB AOF
- Redis提供的持久化机制(RDB和AOF)【转载】
- redis持久化机制之RDB(一)
- redis 持久化rdb aof 简介
- redis持久化之RDB、AOF机制比对
- Redis提供的持久化机制(RDB和AOF)
- redis持久化机制