持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第7天,点击查看活动详情
Redis为了保证效率,数据缓存在了内存中,但是内存中的数据无法永久保存,若需要永久保存数据,则需要Redis的持久化。
RDB (Redis DataBase)
RDB持久化方式能够在指定的时间间隔内对数据进行快照存储。
Redis会单独创建(fork)一个子进程来进行持久化。整个过程中,主进程是不进行任何IO操作的,这就确保了极高的性能。
触发机制
- 满足配置文件中设置的save规则
- 执行 flushall 命令清空整个Redis服务器数据(删除所有数据库的所有key)
- 退出Redis
自动生成一个rdb文件
恢复rdb文件中的数据
将rdb文件存放在Redis的启动目录,Redis启动时会自动检查dump.rdb,恢复其中的数据。
查看需要存在的位置
127.0.0.1:6379> config get dir
1) "dir"
2) "/usr/local/redis/bin"
优点
- 适合大规模的数据恢复
- 对数据的完整性不高
缺点
- 需要一定的时间间隔进程操作,如果Redis意外宕机了,最后一次修改的数据就会丢失
- fork进程时会占用一定的内存空间
AOF操作
appendonly.aof
以日志的形式来记录每个写操作(不记录读操作),将Redis执行过的所有指令记录下来。
只能追加文件,不可以修改文件。
Redis重启时,根据日志文件的内容,将写命令从前到后执行一次,以完成数据的恢复工作。
优点
- 每一次修改都同步,文件的完整性更好
- 每秒同步一次,可能会造成丢失
- 不同步,效率更高 缺点
- 相对于数据文件来说,aof远远大于rdb,修复速度也比rdb慢
- aof的运行效率也比rdb慢
redis默认的配置是RDB持久化
Redis用作缓存时,如果只是希望数据在服务器运行时存在,也可以不使用持久化