什么是持久化
说明:Redis运行环境在内存中,如果redis服务器关闭,则内存数据将会丢失.
需求: 如何保存内存数据呢?
解决方案: 可以定期将内存数据持久化到磁盘中.
持久化策略规则:
当redis正常运行时,定期的将数据保存到磁盘中,当redis服务器重启时,则根据配置文件中指定的持久化的方式,实现数据的恢复.(读取数据,之后恢复数据.)
RDB
RDB其实就是把数据以快照的形式保存在磁盘上。什么是快照呢,你可以理解成把当前时刻的数据拍成一张照片保存下来。
RDB持久化是指在指定的时间间隔内将内存中的数据集快照写入磁盘。也是默认的持久化方式,这种方式是就是将内存中数据以快照的方式写入到二进制文件中,默认的文件名为dump.rdb。
rdb模式特点
1).RDB模式是Redis默认的策略.
2).RDB模式能够定期(时间间隔)持久化. 弊端:可能导致数据的丢失.
3).RDB模式记录的是内存数据的快照.持久化效率较高. 快照只保留最新的记录.
触发机制
1、save的规则满足的情况下,会自动触发rdb规则
2、执行flushall命令
3、退出redis
备份就会自动生成一个rdb文件
如何恢复rdb文件
1、只需要将rdb文件放在redis启动目录就可以了
AOF
aof模式特点
1).AOF模式默认条件下是关闭的.需要手动开启(appendonly 后面改成yes)
2).AOF模式记录的是用户的操作过程,所以可以实现实时持久化操作.
3).AOF模式由于记录的是实时的操作过程,所以持久化文件较大.需要定期维护.
aof默认是文件无限追加
appendonly.aof 记录我们所有写操作
如果aof文件出现错误,这时候redis无法启动,
需要去修复aof文件,redis提供了一个工具:
redis-check-aof – fix
操作:
redis-check-aof – fix appendonly.aof
优点:
1、每次修改都同步,文件完整性更好
2、每秒同步一次,可能会丢失1秒的数据
3、从不同步,效率最高!
缺点:
1、相对于数据文件来说,aof远远大于rdb;修复速度也不如rdb
2、Aof运行效率比rdb慢,所以redis默认配置是rdb。
总结
1、RDB持久化方式是能在指定时间间隔内对数据进行快照存储
2、AOF持久化方式是记录每次对服务器写的操作,当服务器重启的时候会重新执行这些命令来恢复原始的数据,AOF命令以Redis协议追加保护每次写的操作到文件末尾,Redis还能对AOF文件进行后台重写,使得AOF文件的体积不至于过大。
3、只做缓存,如果只希望数据在服务器运行的时候存在,可以不使用任何持久化。
4、同时开启两种持久化方式,当redis重启的时候会优先载入AOF文件来恢复原始数据,引物在通常情况下AOF文件保存的数据集要比RDB文件保存的数据集要完整。