Redis持久化
因为redis是内存数据库,如不把数据存入数据库或磁盘就会断电即失
RDB
默认的就是rdb
redis会创建一个单独的fork子进程来进行持久化,先将数据写入一个临时文件,待持久化过程结束后,再用这个临时文件替换上次持久化好的文件
rdb保存的一个文件就是dump.rdb
rdb触发机制
- save的规则满足的情况下,会自动触发rdb规则
- 执行flushall命令,也会触发我们的rdb规则
- 退出redis,也会产生rdb文件
恢复rdb文件:只需要将rdb文件放入redis启动目录就行了,redis启动的时候会自动检查dump.rdb恢复其中的数据
优点:
- 适合大规模的数据恢复
- 对数据的完整性要求不高
缺点:
- 需要一定的时间间隔进程操作,如果redis意外停机了,最后一次的修改数据就没有了
- fork进程的时候,会占用一定的内存空间
AOF
aof保存的是appendonly.aof文件
以日志的形式来记录每个写操作,jiangredis执行过的所有指令记录下来,读操作不记录,只许追加文件但不可改写文件,redis启动后会读取文件重新构建数据。总之就是,redis重启后就会根据日志文件的内容将写指令从前到后的执行一次以完成数据的恢复工作。
只需要将appendonly改为yes就开启了aof
如果文件错误,redis是无法启动的,可以使用方法:redis-check-aof --fix appendonly.aof来修复文件。
优点:
- 每一修改都同步,文件的完整性会更好
- 每秒同步一次,可能会丢失一秒数据
- 从不同步效率更高
缺点:
- 相对于数据文件,aof远远大于rdb,修复数据比rdb慢
- aof运行效率也要比rdb慢,所以我们redis默认的配置就是rdb持久化