redis是一个支持持久化的内存数据库,也就说redis需要经常将内存中的数据同步到硬盘来保证持久化
redis支持两种持久化方式:
1.snapshotting(快照)也是默认方式(将数据存以快照的方式写入到二进制文件中)
默认文件名dump.rdb可以通过配置设置自动做快照持久化的方式。我们可以配置redis在n秒内
如果超过m个key就自动做快照。 有时间间隙,可能造成数据损失
2.Append-only file(Aof)的方式(将操作存到文件中)
由于快照方式是在一定间隔时间做一次的,所以redis意外down掉的话,就会丢失最后一次快照后的
所有修改
aof比快照方式有更好的持久化性,是由于在使用aof时redis会将每一个收到的写命令通过write
函数追加到文件中。当redis重启时会通过重新执行文件中保存的写命令来在内存中重建整个数据库的
内容。由于os会在内核中缓存write做的修改,所以可能不是立即写到磁盘上,这样aof的持久化也还是
有可能丢失部分修改。可以通过redis我们想要通过fsync函数强制os写入到磁盘的时机。
redis支持两种持久化方式:
1.snapshotting(快照)也是默认方式(将数据存以快照的方式写入到二进制文件中)
默认文件名dump.rdb可以通过配置设置自动做快照持久化的方式。我们可以配置redis在n秒内
如果超过m个key就自动做快照。 有时间间隙,可能造成数据损失
2.Append-only file(Aof)的方式(将操作存到文件中)
由于快照方式是在一定间隔时间做一次的,所以redis意外down掉的话,就会丢失最后一次快照后的
所有修改
aof比快照方式有更好的持久化性,是由于在使用aof时redis会将每一个收到的写命令通过write
函数追加到文件中。当redis重启时会通过重新执行文件中保存的写命令来在内存中重建整个数据库的
内容。由于os会在内核中缓存write做的修改,所以可能不是立即写到磁盘上,这样aof的持久化也还是
有可能丢失部分修改。可以通过redis我们想要通过fsync函数强制os写入到磁盘的时机。