大白话定义
时间间隔内将内存中的数据写入磁盘
Snapshot快照
它恢复时候是将快照文件直接读到内存中
fork
简单的说就是备份(复制一个与当前进程一样的进程)Redis本身是单进程单线程底层用的epoll模型,所以快
RDB Redis DataBase
优势:
适合大规模的数据恢复
对数据完整性和一致性要求不高
缺点:
最后一次持久化后的数据可能会丢失
还有就是fork备份一份,要考虑内存空间
RDB保存文件是保存在dump.rdb文件中 这些都可以在配置文件修改但是业界都是用的这个文件名字
动态停止RDB:
1 redis-cli config set save "" 当然最好还是备份一份
需求:比如现在设置的是2分钟修改10次就触发RDB模式但是我又不想等它两分钟,写了马上存的话
1 save 只管保存 全部阻塞 2 bgsave 后台异步进行快照保存
如果在此时执行flushall命令,dump.rdb文件为空,无意义
恢复数据:
把dump.rdb移动到redis安装目录并启动就能恢复(最好不要在宿主机上操作这些,在备份机上搞这些操作)
异常修复启动
redis-check-dump --fix dump.rdb
出厂默认设置
1分钟内改了1万次
5分钟改了10次
15分钟内改了1次
AOF Append Only File
机制
以日志的形式来记录每个写操作,写操作指令全部记录下来
如果AOF与RDB共存的时候优先读取appendonly.aof,如果appendonly.aof有错误的写命令被保存进去,redis再从新启动就启动不了,但是可以通过redis-check-aof --fix appendonly.aof命令启动 自动就会把里边的错误命令删除再启动
Rewirte
文件追加方式,文件会越来越大,为了避免这种情况,新增重写机制
重写原理
简单的说又要fork
触发重写机制
默认是aof文件大小是上次rewirte后大小的一倍且文件大于64M时候就触发
优势:
每秒同步 每秒修改不同步
劣势:
aof文件大小远大于rdb,恢复没得rdb快
运行效率慢与rdb,大量的io操作,占内存,逐条文件中执行命令
常用的两个命令进程信息:
lsof -i :6379
ps -ef|grep redis
原文:https://www.cnblogs.com/Alexephor/p/11456042.html