redis的持久化机制和数据同步
本文参考 http://blog.csdn.net/qq_28602957/article/details/52732615
Redis是一个支持持久化的内存数据库,也就是说redis需要经常将内存中的数据同步到硬盘来保证持久化。
redis支持两种持久化的方式:1、snapshotting(快照)也是默认方式 2、Append-only file(缩写是aof)的方式
snapshotting(快照)也是默认方式
刚装完redis的时候没有dump.rdb文件,满足快照要求后,系统会自动生成dump.rdb文件,且文件类型为二进制文件。
Append-only file(缩写是aof)的方式
由于快照方式是在一定的时间间隔做一次,所以redis宕机的话会丢失最后一次快照以后修改的内容,aof有更好的持久化性,使用aof时,redis会将每一个收到的写命令都通过write函数追加到文件中,当redis重启时,会通过重新执行文件中保存的写命令在内存中重建整个数据库的内容。
但是由于操作系统(OS)会在内核中缓存write做的修改,所以可能不是立即写到磁盘上的。这样aof方式的持久化还是有可能会丢失部分修改。
可以通过配置文件告诉redis我们想通过fsync函数强制OS写入到磁盘的时机。
配置文件为redis.conf
将no改为yes,满足aof方式后,系统会自动生成一个appendonly.aof文件,且非二进制,用cat查看,里面保存的是刚新加的命令。