架构师养成记--34.Redis持久化
---恢复内容开始---
redis是一个支持持久化的内存数据库,也就是搜redis需要经常将内存中的数据同步到硬盘来保证持久化。redis持久化有两种方式。
snapshotting(快照)默认方式,将内存中的数据以快照方式写入二进制文件中,默认为dump.rdb,可以通过配置设置自动做快照持久化的方式。我们可以配置redis在n秒内如果超过m个key则修改或自动做快照。
snapshotting设置:
- save 900 1 #900秒内如果超过1个key被修改则发起快照保存
- save 300 10 #300秒内如果10个key被修改则发起快照保存
- save 60 10000 #同理
append-only file(缩写aof)的方式(有点类似于oracle日志)优于快照方式是一点时间间隔做一次。所以可能发生redis意外down的情况就会丢失最后一次快照后的所有数据、aof比快照方式有更好的持久化,是由于在使用aof时,redis会将每个收到的写命令都通过write函数追加到命令中,当redis重启时会重新执行文件中保存的写命令来在内存中重建这个数据库的内容,这个文件在bin目录下:APPendonly.aof。aof不是立即写到磁盘上,可以通过配置文件修改强制写到硬盘中。
aof设置:
- appendonly yes //启动aof持久化方式有三种修改方式
- appendfsync always //收到命令就立即写到车票,效率最低,但是嫩保证完全持久化
- appendfsync everysec //每秒钟写入磁盘一次,在性能和持久化方面做了很好的折中
- appendfsync no //完全依赖os 性能最好 持久化没保障
在生产环境中一般使用aof的 appendfsync always