redis-持久化
程序员文章站
2024-01-02 16:01:22
redis持久化包括rdb和aof两种方案 1、rdb持久化方案 持久化过程:按照redis.conf文件配置,如 save 900 1 save 300 10 save 60 10000 ,在指定时间间隔内满足数据落盘策略时候,redis会fork一个和原进程一模一样的子进程,该进程先将数据存到一 ......
redis持久化包括rdb和aof两种方案
1、rdb持久化方案
- 持久化过程:按照redis.conf文件配置,如
save 900 1
save 300 10
save 60 10000
,在指定时间间隔内满足数据落盘策略时候,redis会fork一个和原进程一模一样的子进程,该进程先将数据存到一个临时文件里,待持久化结束后,用临时文件替换上次的持久化文件。
- 触发落盘:满足配置的策略、使用flushdb、使用flushall(效果是所用数据都删除了,落盘后dump.rdb(默认文件名,可配置)文件内容为空)
- 恢复数据:将dump.rdb复制到安装redis目录,并启动redis的服务。(连上redis后可以使用config get dir 获取redis的安装目录)
劣势:a、在一定间隔时间落盘一次,如果redis意外down,会吊事最后一次的redis中所有修改
b、fork的时候,内存中的数据被克隆了一份,大致2倍的膨胀性需要考虑
优势:适合对数据完整性和一致性要求不高的场景;适合大规模的数据恢复
2、aof持久化方案
- 持久化过程:按照redis.conf文件配置,如
#appendfsync always
appendfsync everysec
#appendfsync no
,根据同步策略为everysec,则每秒将写操作追加(读操作不会追加)到appendonly.aof文件。
- 恢复数据:将appendonly.aof文件复制到config get dir对应的目录,并重启redis
- 重写机制:appendonly.aof的内容是以追加的方式添加的,如果没有特殊机制,该文件会越来越大,为避免这个情况,redis针对aof持久化方式有重写机制
重写过程:当aof文件超过配置的阈值(满足配置文件的配置的策略),redis会fork出一个进程,该进程遍历内存中的数据,每条记录都对应一条set语句,写入临时的aof文件,重写完成后,用临时文件替换上次的持久化文件。
劣势:a、aof文件远大于rdb文件
b、数据恢复速度慢于rdb
优势:同步策略always->每次修改同步,性能差但完整性好;同步策略everysec->每秒同步,异步操作,如果一秒内down机会丢失数据;no->从不同步
3、疑问
如果两种持久化方式都配置了,那么redis重启时候,从哪里恢复数据呢?
从appendonly.aof文件恢复,因为aof持久化的数据更精确
是不是只使用aof持久化方式呢?
...