redis數據持久化

1. RDB方式 RDB方式的持久化是经过快照(snapshotting )完成的,当符合必定条件时Redis会自动将内存中的全部数据进行快照并存储在硬盘上。进行快照的条件能够由用户在配置文件中自定义,由两个参数构成:时间和改动的键的个数。当在指定的时间内被更改的键的个数大于指定的数值时就会进行快照。RDB是Redis默认采用的持久化方式,在配置文件中已经预置了3个条件: save 900 1
save 300 10
save 60 10000
save参数指定了快照条件,能够存在多个条件,条件之间是“或”的关系。如上所说,save 900 1的意思是在15分钟(900秒钟)内有至少一个键被更改则进行快照。 若是想要禁用自动快照,只须要将全部的save参数删除便可。 Redis默认会将快照文件存储在当前目录的dump.rdb文件中,能够经过配置dir和dbfilename两个参数分别指定快照文件的存储路径和文件名。 Redis启动后会读取RDB快照文件,将数据从硬盘载入到内存。根据数据量大小与结构和服务器性能不一样,这个时间也不一样。 经过RDB方式实现持久化,一旦Redis异常退出,就会丢失最后一次快照之后更改的全部数据。这就须要开发者根据具体的应用场合,经过组合设置自动快照条件的方式来将可能发生的数据损失控制在可以接受的范围。若是数据很重要以致于没法承受任何损失,则能够考虑使用AOF方式进行持久化。安全

2. AOF 方式 默认状况下Redis没有开启AOF(append only file)方式的持久化,能够经过appendonly 参数开启: appendonly yes
开启AOF持久化后每执行一条会更改Redis中的数据的命令,Redis就会将该命令写入硬盘中的AOF文件。AOF文件的保存位置和RDB文件的位置相同,都是经过dir参数设置的,默认的文件名是appendonly.aof ,能够经过appendfilename参数修改: append file name appendonly.aof
在Redis中咱们能够经过appendfsync参数设置同步的时机:服务器

appendfsync always (每次执行写入都会执行同步,这是最安全也是最慢的方式)app

appendfsync everysec (默认状况下Redis采用everysec 规则,即每秒执行一次同步操做)性能

appendfsync no (no表示不主动进行同步操做,而是彻底交由操做系统来作(即每30秒一次),这是最快但最不安全的方式)操作系统

通常状况下使用默认值everysec就足够了,既兼顾了性能又保证了安全。Redis容许同时开启AOF和RDB,既保证了数据安全(AOF)又使得进行备份(RDB)等操做十分容易。此时从新启动Redis后Redis会使用AOF文件来恢复数据,由于AOF方式的持久化可能丢失的数据更少。
相关文章
相关标签/搜索