Redis学习(三) -- Redis的持久化方案

Redis之所以性能优秀是因为其将数据都存储在内存中,这样就伴随着一个问题,当重启服务后,数据会不会丢失?答案当然是不会。Redis有着优秀的数据持久化方案,可以保证重启服务,或者服务挂掉时,数据不会丢失。

持久化,将内存中的数据保存在磁盘中,重启服务时,会将数据从磁盘恢复到内存中。

Redis的持久化有两种方案,Rdb以及Aof。下面来详细讲解一下。

1、Rdb方式。

       这是Redis默认的一种持久化方案,定期通过快照的形式将数据保存到磁盘上。

     Rdb方式的规则以及快照间隔时间:  在redis.conf文件中,

save 900 1:900秒内发生一次数据库操作

save 300 10:300秒内发生10次数据库操作

save 60 10000: 60秒内发生10000次数据库操作

以上三个条件是或的关系,满足任一即进行持久化。

在redis.conf文件中还可以指定持久化文件存储的目录。如下图:

dbfilename 后面就是Rdb方式持久化文件的名称,下面dir 后面就是指定该文件的目录。上图中是默认配置,一般不做修改。

工作原理:当redis需要做持久化时,redis会fork一个子进程;子进程将数据写到磁盘上一个临时RDB文件中;当子进程完成写临时文件后,将原来的RDB替换掉,这样的好处就是可以copy-on-write

Rdb方式的缺点:

             如果redis被非法关闭,那么会丢失最后一次持久化之后的数据。因为Rdb方式持久化有个时间间隔。

            如果数据不重要,则不必担心,如果数据重要的话,就请使用Aof方式。

2、Aof方式

Redis默认是不使用该方式进行持久化的。

该方式的持久化,是每次操作redis数据库时,都会将操作记录存储到aof持久化文件中。

第一步:开启aof持久化方案。

            将redis.conf文件中的appendonly的值改为yes,即开启了aof方式的持久化。

       

下面的appendfilename 后面的是aof持久化文件名称,文件目录和Rdb方式的一样。

第二步:修改完之后重启Redis,重启后会发现bin目录下多出来一个appendonly.aof文件。

      

    可以看到该文件大小为0,接下来我们操作一次数据库,然后看看大小是否有改变。

      

   注意:如果同时使用Rdb和Aof方式进行持久化,重启redis时,数据从aof持久化文件中加载。

好了,关于Redis持久化方案的学习就这么多,希望能帮助到也正在学习这块儿的你。

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

redis学习另外几篇:

Redis的简介以及安装启动

Redis的五种数据类型以及相关操作命令

Redis的主从复制

主从切换

猜你喜欢

转载自blog.csdn.net/pavel101/article/details/81483861