持久化简介
持久化一般有两种思路:
- 将当前数据状态进行保存,快照形式,存储数据结果,存储格式简单,关注点在数据。
- 将数据的操作过程进行保存,日志形式,存储操作过程,存储格式复杂,关注点在数据的操作过程。
以上两种思路在redis中分别对应RDB和AOF。
RDB
在redis命令行输入SAVE
命令就能手动执行一次RDB持久化。但这种前台启动的方式会阻塞当前Redis服务器,直到当前RDB过程完成为止,线上环境不建议使用。实际上redis内部涉及到RDB的操作都是采用bgsave
的方式。
bgsave
既然SAVE
单线程执行方式效率过低,自然想到bgsave
后台异步执行,该指令执行后redis会调用fork函数生成子进程去创建rdb文件。
但我们每次手动执行bgsave
才会持久化就很蠢,肯定可以自动化的,需要在配置文件中配置:
save second changes
# 满足限定时间范围内key的变化数量达到指定数量即进行持久化
second:监控时间范围
changes:监控key的变化量
如:
save 900 1
save 300 10
save 60 10000
只要有一个条件满足,就会执行rdb的文件保存。
# 关闭rdb如下
save ""