redis RDB持久化
redis是键值对内存数据库,它的数据存储在内存之中,当服务器进程退出,所以需要对redis进行持久化,
将数据库状态保存到硬盘中。
rdb文件是一个进过压缩的二进制文件,通过该文件可以还原生成rdb文件时数据库的状态。
有两个redis命令可以用于生成rdb文件,一个是save,另一个是bgsave。save命令会阻塞redis服务器进
程。bgsave命令则是派生出一个子进程,然后子进程负责创建rdb文件,父进程继续处理命令请求。
rdb的载入是在服务器启动时自动执行的,aof文件的更新频率比rdb文件的更新频率高,所以:
开启了aof持久化功能优先使用aof文件还原数据 aof关闭时使用rdb文件来还愿数据
自动间隔性保存,如以下配置
save 900 1
save 300 10
save 60 10000
满足三个条件中的任何一个,bgsave命令都会自动执行
900秒对数据库进行一次修改
300秒做十次修改
60秒10000次
保存条件会被保存在saveparam参数中
dirty计数器和lastsave属性
dirty记录上次save或者bgsave命令之后,服务器对数据库状态进行了多少次修改
lastsave是一个时间戳,记录上一次bgsave或者save的时间
redis的周期性操作函数会默认每隔100毫秒就会执行一次检查save选项设置的条件是否满足,满足就会执行bgsave命令