美文网首页
Redis持久化

Redis持久化

作者: spiderM | 来源:发表于2018-12-07 17:28 被阅读0次

一、持久化的作用

redis所有的数据都存在内存中,对数据的更新将异步地保存到磁盘上。
1.什么是持久化?
数据从内存保存到磁盘的过程叫做持久化。
2.持久化的方式

  • 快照 MySQL Dump、Redis RDB
  • 写日志 MySQL Binlog、Redis AOF

二、RDB

是Redis内存到硬盘的快照,用于持久化


RDB

RDB触发机制
1.save命令
client执行save命令,redis就会生成一个RDB文件默认叫dump.rdb(以旧换新的策略)。是一个同步命令,会阻塞客户端命令
2.bgsave命令
client执行bgsave命令,会交给后台子进程执行(fork),不会阻塞Redis但是fork新进程

save与bgsave的比较

3.自动生成RDB

4.其他方式

  • 全量复制
  • debug reload
  • shutdown

RDB存在的问题
1.O(n):耗时
2.fork():消耗内存,copy-on-write策略(写的时候先把文件拷贝一份,往拷贝的文件里写,然后再引用这个副本)
3.DiskI/O:IO消耗
4.当出现宕机的情况导致文件没有写完

三、AOF

运行原理

AOF运行原理-创建

当发生宕机之后,通过AOF文件进行完整的恢复

AOF的三种策略
Redis写文件首先是将内容写到缓冲区中,然后根据不同的策略刷新至磁盘中。
1.always:每一条命令刷新一次
2.everysc:每一秒刷新一次
3.no:操作系统决定

四、RDB和AOF的抉择

image.png

相关文章

网友评论

      本文标题:Redis持久化

      本文链接:https://www.haomeiwen.com/subject/hwsthqtx.html