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学习另外几篇: