Redis 持久化详解

       Redis作为内存数据库,当断电或redis宕机状况下,会造成内存中数据丢失。因此Redis也有自己持久化机制,即RDB、AOF方式对Redis数据做持久化。

1、RDB

       RDB为Redis默认持久化机制,是将内存中数据集快速写入到磁盘,记录内存快照。当发生宕机重启Redis,数据会从文件中重新读到内存中。

# save ""
save 900 1       如果900秒有超过1个key发生变化,则往磁盘写入
save 300 10      如果300秒有超过10个key发生变化,则往磁盘写入
save 60 10000    如果60秒有超过10000key发生变化,则往磁盘写入

RDB方式默认情况下是开启的,如果要关闭可以打开save "" 注释

2、AOF

        AOF方式通过将Redis写操作日志保存起来,Redis宕机重启时,将日志文件中的命令按顺序执行一遍,达到数据恢复目的。默认情况下它是关闭的,需要我们去配置。

appendonly no //默认是关闭的,开启需要设置yes
appendfilename "appendonly.aof" //生成aof文件名

#appendfsync allawysec //每接受一次redis写命令,往磁盘中写一次,操作频繁
appendfsync everysec   //1秒写一次
#appendfsync no        //完全依赖os,数据一致性没保障

no-appendfsync-on-rewirte no

auto-aof-rewirte-percentage 100 //aof重写机制,当aof文件容量达到64m时,开始重写aof文件
auto-aof-rewirte-size 64m

       AOF方式通过追加写日志方式做的持久化,这造成aof文件会越变越大,所以AOF也有自己的一套重写机制,父进程来完成Redis客户端写操作并且将写操作缓存起来,而子进程则对Redis内存进行写入临时文件,然后父进程调用子进程将两者写操作记录到临时文件,即使子进程失败,也能达到记录写操作目的,最后父进程再去替换aof文件,这样就达到aof文件压缩目的。

3、RDB与AOF比较

     1、RDB方式持久化速度大于AOF方式,AOF记录每一步写操作,对性能影响比较大;

     2、RDB方式数据一致性差;

     3、AOF文件随着写日志记录,越来越庞大,一旦Redis宕机重启时间消耗比较长。选用RDB重启时间比较短;

     4、一般而言,做Redis持久化,RDB和AOF是同时开启的,互补两者之间的不足。

你可能感兴趣的:(Redis 持久化详解)