上一节聊了Redis几个基本数据类型,这一节我们来看看Redis具体如何持久化数据?
Redis 支持RDB 和 AOF两种持久化方式,有效避免因进程退出造成的数据丢失问题,
下次重启时利用之前持久化的文件即可实现数据恢复
RDB
描述:
RDB持久化是把当前进程数据生成快照保存到硬盘的过程,其持久化过程为手动触发、自动触发。
redis重启时,会自动把rdb文件加载到内存中
DB loaded from disk: 0.000 seconds
触发机制:
手动:
- save 命令: 阻塞当前Redis服务器,直到RDB过程完成为止,对于内存较大的实例会造成长时间的阻塞。一般线上不建议使用。
- bgsave命令(流行使用):Redis进程fork创建子进程,RDB持久化过程由子进程负责,完成后自动结束。阻塞只发生在fork阶段,一般时间很短。
自动触发:
- 使用save相关配置: 如save m n, 表示m 秒内数据集存在n次修改时,自动触发bgsave 在redis.conf中就有
- 如果从节点执行全量复制操作,主节点自动执行bgsave命令生成RDB文件并发送给从节点。
- 执行debug reload 命令重新加载Redis时,也会自动触发save操作。
- 默认情况下执行shutdown命令时,如果没有开启AOF持久化功能则自动执行bgsave
执行流程(bgsave):