小蚂蚁学习Redis笔记(11)——Redis重要特性——持久化机制

持久化机制

Redis是一个支持持久化的内存数据库,也就是说Redis须要常常将内存中的数据同步到硬盘来保证持久化。redis

Redis支持两种持久化机制:

  1. snapshooting (快照)也是默认的方式。把数据作个备份。
  2. Append-only file(缩写aof)的方式。将写、改、删保存到一个文件中去。
1. snapshotting

将内存中的数据以快照的方式写到二进制文件中。默认名为:dump.rdb。数据库

能够手动配置Redis在n秒内若是超过m个key被修改过,就自动作快照。如:
save 900 1 //意思是,若是在900秒以内超过1个key被修改过,则发起快照保存。
redis.conf配置文件默认为:缓存

save 900 1
save 300 10
save 60 10000
2. aof方式

因为快照方式是在必定间隔时间作一次的,因此若是Redis意外崩溃的话,就会丢失最后一次快照后的全部修改。
aof能够比快照作到更好的持久化,是因为在使用aof时,redis会将每个收到的写命令都经过write函数追加到文件中,当Redis重启时会从新执行文件中保存的写命令,从而在内存中重建整个数据库的内容。app

固然,因为os会在内核中缓存write作的修改,因此可能不是当即写到磁盘上。这样aof方式的持久化也仍是有可能会丢失部分修改。能够经过配置文件告诉Redis,咱们想要经过fsync函数强制os写入到磁盘的时机。
修改配置文件:
appendonly yes //启用aof持久化方式
下面有三个选项,分别是:
# appendfsync always //收到写命令就马上写入磁盘,最慢,可是保证彻底的持久化。
appendfsync everysec //每秒钟写入磁盘一次,在性能和持久化方面作了很好的折中。
# appendfsync no //彻底依赖os,性能最好,持久化没保证。
设置完毕以后,重启Redis服务。能够看到生成了一个新的文件: appendonly.aof函数

[root@myCentos redis]# ls /usr/local/redis/
appendonly.aof  bin  dump.rdb  etc

小结:snapshotting保存的是数据,而aof保存的是写命令操做。性能

学PHP的小蚂蚁 原创博客 http://my.oschina.net/woshixiaomayi/blog.net

相关文章
相关标签/搜索