RDB演示
RDB全称Redis Database Backup file (Redis数据备份文件),也被叫做Redis数据快照。简单来说就是把内存中的所有数据都记录到磁盘中。当Redis实例故障重启后,从磁盘读取快照文件,恢复数据。快照文件称为RDB文件,默认是保存在当前运行目录。
执行命令为save
,需要注意的是,该命令由redis主进程执行,执行期间会阻塞所有命令,适合在redis停机的时候使用
ubuntu_docker:0>save
"OK"
ubuntu_docker:0>
因此可以使用另一个命令:bgsave
,顾名思义,由子进程在后台创建快照,不阻塞主进程命令,适合在redis运行时使用
ubuntu_docker:0>bgsave
"Background saving started"
ubuntu_docker:0>
redis内部也提供触发RDB的机制,可以在redis.conf中找到:
RDB的其他配置也在redis.conf中:
而data目录下的dump.rdb就是保存的redis快照
RDB的fork原理
bgsave开始时会fork主进程得到子进程,子进程共享主进程的内存数据。完成fork后读取内存数据并写入RDB文件.
RDB方式bgsave的基本流程?
- fork主进程得到一个子进程,共享内存空间
- 子进程读取内存数据并写入新的RDB文件
- 用新RDB文件替换旧的RDB文件。
RDB会在什么时候执行? save 60 1000代表什么含义?
- 默认是服务停止时。
- 代表60秒内至少执行1000次修改则触发RDB
RDB的缺点?
- RDB执行间隔时间长,两次RDB之间写入数据有丢失的风险
- fork子进程、压缩、写出RDB文件都比较耗时
AOF演示
AOF全称为Append Only File(追加文件)。Redis处理的每一个写命令都会记录在AOF文件,可以看做是命令日志文件。
AOF默认是关闭的,需要修改redis.conf配置文件来开启AOF:
AOF的命令记录的频率也可以通过redis.conf文件来配:
EDB与AOF对比
RDB和AOF各有自己的优缺点,如果对数据安全性要求较高,在实际开发中往往会结合两者来使用
如果有兴趣了解更多相关内容,欢迎来我的个人网站看看:瞳孔的个人空间