Redis的持久化机制

Redis 的持久化机制包括快照(RDB)和AOF(Append Only File)两种方式。快照是在某一时刻保存所有数据到硬盘,通过BGSAVE或SAVE命令触发,也可配置自动保存条件。AOF记录所有写命令,保证数据变化的完整性,通过appendonly配置开启,并可调整日志追加频率和同步策略。AOF文件过大时,可通过AOF重写压缩文件大小。
摘要由CSDN通过智能技术生成

持久化机制

         client redis【内存】---》内存数据--数据持久化-----》磁盘

   提供了2中持久化的方式来将数据存储到硬盘里面分别是:

         a:快照(Snapshot)

         b:AOF(Append Only File) 只追加日志文件

 

A:快照

    1:特点 

         这种方式可以将某一时刻的所有数据都写入硬盘中,当然这也是redis的默认开启持久化方式,保存的文件是以.rdb形式结尾的文件因此这种方式也称之为RDB方式。

       

2:快照的2种方式

      1):客户端方式:BGSAVE和SAVE指令

              a: BGSAVE:客户端可以使用BGSAVE命令来创建一个快照,当接收到客户端的BGSAVE命令时, redis会调用fork '来创建一个子进程,然后子进程负责将快照写入磁盘中,  而父进程则继续处理命令请求。

               名词解释: fork当一个进程创建子进程的时候,底层的操作系统会创建该进程的一个副本,在 类unix系统中创建子进程的操作会进行优化:在刚开始的时候,父子进程共享相同内存,直到父进程或子进程对内存进行了写之后,对被写入的内存的共享才会结束服务`

 

                  b: SAVE:客户端还可以使用SAVE命令来创建一个快照,接收到SAVE命令的redis服务器在快照创建完毕之前将不再响应任何其他的命令

       

 

      2):服务器配置自动触发

                a):如果用户在redis.conf中设置了save配置选项, redis会在save选项条件满足之后自动触发一次BGSAVE命令,如果设置多个save配置选项,当任意一个save配置选项条件满足.redis也会触发一次BGSAVE命令

在配置文件的redis.conf文件中满足一下条件,

                b):服务器接收客户端shutdown指令:

                    当redis通过shutdown指令接收到关闭服务器的请求时,会执行一个save命令,阻塞所有的客户端,不再执行客户端执行发送的任何命令,并且在save命令执行完毕之后关闭服务器

3:配置快照生成的名称和位置

可以在redis-conf文件中修改默认配置

 

 

B:AOF只追加日志文件

1:特点

      这种方式可以将所有客户端执行的写命令记录到日志文件中AOF持久化会将被执行的写命令写到AOF的文件末尾,以此来记录数据发生的变化,因此只要redis从头到尾执行一次AOF文件所包含的所有写命令,就可以恢复AOF文件的记录的数据集.

2:开启AOF持久化:在redis的默认配置中AOF持久化机制是没有开启的,雪要在配置中开启。

    #开启AOF持久化

          a:修改 appendonly  yes 开其持久化

         b:修改  appendfilename  "appendonly.aof" 指定生成文件名称

3:日志追加频率:

4:修改同步频率问题:

5:AOF带来的问题:

     AOF的方式也同时带来了另一个问题。持久化文件会变的越来越大。例如我们调用incr test命令100次,文件中必须保存全部的100条命令,其实有99条都是多余的。因为要恢复数据库的状态其实文件中保存一条set test 100就够了。为了压缩aof的持久化文件Redis提供了AOF重写机制。

解决方法:AOF重写,用来一定程度上减少AOF的体积。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值