??RDB(Redis Database) 内存快照,就是指内存中的数据在某一个时刻的状态记录。
??和 AOF 相比,RDB 记录的是某一时刻的数据,并不是操作,所以,在做数据恢复时,我们可以直接把 RDB 文件读入内存,很快地完成恢复。
??但内存快照也并不是最优选项
如何生成快照
save命令
save时在主线程中执行,会导致阻塞;
bgsave命令
bgsave时创建一个子进程,专门用于写入 RDB 文件,避免了主线程的阻塞,这也是 Redis RDB 文件生成的默认配置。
主线程的确没有阻塞,可以正常接收请求,但是,为了保证快照完整性,它只能处理读操作,因为不能修改正在执行快照的数据。
为了快照而暂停写操作,肯定是不能接受的。所以这个时候,Redis 就会借助操作系统提供的写时复制技术(Copy-On-Write, COW),在执行快照的同时,正常处理写操作。
RDB配置
??redis.conf
save 900 1
save 300 10
save 60 10000
stop-writes-on-bgsave-error yes
rdbchecksum yes
rdbcompression yes
dbfilename dump.rdb
rdb-del-sync-files no
dir ./
|