Redis持久化redis
Redis提供了两种持久化的方式,分别是RDB(Redis DataBase)和AOF(Append Only File),若是这两种模式都关闭了,redis就会默认把数据只存在内存里。算法
RDB,简而言之,就是在不一样的时间点,将redis存储的数据生成快照并存储到磁盘等介质上。数据库
AOF,则是换了一个角度来实现持久化,那就是将redis执行过的全部写指令记录下来,在下次redis从新启动时,只要把这些写指令从前到后再重复执行一遍,就能够实现数据恢复了。安全
其实RDB和AOF两种方式也能够同时使用,在这种状况下,若是redis重启的话,则会优先采用AOF方式来进行数据恢复,这是由于AOF方式的数据恢复完整度更高。app
若是你没有数据持久化的需求,也彻底能够关闭RDB和AOF方式,这样的话,redis将变成一个纯内存数据库,就像memcache同样。ide
总结:AOF持久化会比RDB记录的数据更加全面性能
Redis持久化相关参数配置spa
RDB持久化内存
经过save这个参数设置过时前时间it
save 900 1 #表示每15分钟且至少有1个key改变,就触发一次持久化
save 300 10 #表示每5分钟且至少有10个key改变,就触发一次持久化
save 60 10000 #表示每60秒至少有10000个key改变,就触发一次持久
要取消这种持久化方式就把上边三行注释掉,打开save “” #这样能够禁用rdb持久化
AOF持久化
appendonly yes #若是是yes,则开启aof持久化
appendfilename “appendonly.aof” # 指定aof文件名字
模式:
appendfsync everysec #指定fsync()调用模式,有三种
一、no(不调用fsync,每隔一段时间写一次(根据你系统的算法频率))
二、always(每次写都会调用fsync,只要有变更就会写进去)
三、everysec(每秒钟调用一次fsync,写一次)
优缺点:
一、no:最不安全,可能会丢数据
二、always:数据最安全,但性能会差一些,会耗费一些磁盘io
三、everysec:相对来说既安全又高效(默认)