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