简介
1. redis持久化存储支持两种方式:RDB和AOF;RDB一定时间存储文件,AOF默认每秒去存储历史命令
2. redis需要经常将内存中的数据同步到银盘来保证持久化
RDB
1. rdb:redis database
2. 核心函数:rdbSave(生成rdb文件),rdbLoad(从rdb文件中加载进内存)
3.redis 默认的持久化机制
3. 快照是默认的持久化方式,默认文件名为dump.rdb
--快照保存数据快,还原数据快,适用于灾难备份
--小内存机器不适合使用,RDB机制符合快照条件就会使用快照机制
快照使用条件:
1. 服务器正常关闭 ./bin/redis-cli shutdown
2. key 满足使用条件
--redis-conf 中的save配置
AOF
由于快照方式是在一定时间间隔进行一次的,当redis意外宕机时,就会丢失最后一次快照后的所有
修改,当应用不能丢失任何数据时,可以差用AOF持久化方式
1. aof:Append-only file
2. redis会将每一个收到的写命令通过write函数追加到文件中的末尾(默认appendonly.aof),
当redis重启时会通过重新执行文件中保存的写命令在内存中重建整个数据库的内容
3. 每当执行服务器(定时)任务或函数时,flushAppendOnlyFile函数就会被调用,这个函数执行以下两个aof写入保存:
--write:根据条件将aof_buf中的缓存写入到AOF文件
--save:根据条件调用fsync或者fdatasync函数,将AOF文件保存到磁盘中
4. 三种持久化方式:
redis-conf文件:
appendonly yes--启用aof持久化方式
appendfsync always--收到命令就立即写入磁盘,最慢,但保证完全的持久化
appendfsynceverysec--每秒中写入一次,在性能和持久化方面做了很好的折中
appendsync no--完全依赖OS,性能最好,持久化没保证
5. 缺点:持久化文件会越来越大