一、持久化的作用
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新进程
3.自动生成RDB
4.其他方式
- 全量复制
- debug reload
- shutdown
RDB存在的问题
1.O(n):耗时
2.fork():消耗内存,copy-on-write策略(写的时候先把文件拷贝一份,往拷贝的文件里写,然后再引用这个副本)
3.DiskI/O:IO消耗
4.当出现宕机的情况导致文件没有写完
三、AOF
运行原理
当发生宕机之后,通过AOF文件进行完整的恢复
AOF的三种策略
Redis写文件首先是将内容写到缓冲区中,然后根据不同的策略刷新至磁盘中。
1.always:每一条命令刷新一次
2.everysc:每一秒刷新一次
3.no:操作系统决定
网友评论