redis RBD机制

RDB 就是 Redis DataBase,内存中的全量数据在某一个时刻的状态记录。

快照机制

引入原因

AOF日志进行故障恢复的时候,需要逐一执行操作日志。如果操作日志非常多,Redis 恢复得很慢,影响到正常使用。

bgsave命令

  • 主进程fork出子进程,共享主线程的所有内存数据。
  • 子进程读取主线程的内存数据,并把它们写入 RDB 文件。
  • 借助了操作系统提供的写时复制技术(Copy-On-Write, COW),在执行快照的同时,正常处理写操作,避免了主线程的阻塞。
  • 如果主线程要修改一块数据,这块数据就会被复制一份,生成数据副本。bgsave 子进程会把这个副本数据写入 RDB 文件。

增量快照

做了一次全量快照后,后续的快照只对修改的数据进行快照记录,避免每次全量快照的开销。
需要使用额外的元数据信息去记录哪些数据被修改了,这会带来额外的空间开销问题。

混用 AOF日志和RDB(Redis 4.0)

内存快照以一定的频率执行,在两次快照之间,使用 AOF 日志记录这期间的所有命令操作。
快照不用很频繁地执行,这就避免了频繁 fork 对主线程的影响。

AOF 日志也只用记录两次快照间的操作,不需要记录所有操作了,因此,就不会出现文件过大的情况了,也可以避免重写开销。

备份机制选择

数据不能丢失时,内存快照和 AOF 的混合使用;
如果允许分钟级别的数据丢失,只使用 RDB;
如果只用 AOF,优先使用 everysec 的配置选项,因为它在可靠性和性能之间取了一个平衡。


   转载规则


《redis RBD机制》 wangyixin-tom 采用 知识共享署名 4.0 国际许可协议 进行许可。
 上一篇
rabbitmq消息发布 rabbitmq消息发布
可靠投递 mandatory当交换器无法路由消息,RabbitMQ将回发Basic.Return消息到发布者,同时回发完整消息。Basic.Return是异步的,在消息发布后的任何时候都可能发生。在rabbitpy库中,客户端自动接收Bas
2020-10-26
下一篇 
redis AOF机制 redis AOF机制
先写内存,在写日志。1、命令执行成功才会被记录日志。2、避免对当前命令的阻塞。 风险1、突然宕机,Redis用作数据库的话,命令可能没有记入日志,所以就无法用日志进行恢复了。2、AOF 虽然避免了对当前命令的阻塞,但可能会给下一个操作带来阻
2020-10-26
  目录