如何开启并使用Redis持久化功能

为解决Redis数据丢失问题,实现数据持久化,可以使用两种机制来实现数据持久化;也就是RDB(Redis DataBase)和AOF(Append Only File),下面我们就来分别简单介绍一下这两种持久化机制的开启方法。

无论使用哪种持久化类型,都需要固定Redis工作目录

[root@localhost redis-4.0.1]# pwd
/root/redis-4.0.1
[root@localhost redis-4.0.1]# vim redis.conf     #编辑Redis配置文件

...

dir ./   #Redis工作目录;如果是相对路径,RDB转储文件和AOF文件将保存在此目录,用于下次启动Redis服务器时寻找该目录下的转储文件;建议设置为绝对路径

一:RDB持久化

打开RDB持久化功能

[root@localhost redis-4.0.1]# pwd
/root/redis-4.0.1
[root@localhost redis-4.0.1]# vim redis.conf     #编辑Redis配置文件

...

dbfilename dump.rdb  #在此处配置RDB转储文件名,默认是dump.rdb

RDB其实就是把数据以快照的形式保存在磁盘上;Redis提供了三种触发方式,save、bgsave、自动化。Redis服务器每次启动时,将自动加载dump.rdb文件到内存数据库中,实现数据的持久化

save:该命令会阻塞当前Redis服务器,执行save命令期间,Redis不能处理其他命令,直到RDB过程完成为止;另外,执行shutdown关闭Redis命令时,系统也会调用save完成快照文件的转储工作后再关闭Redis服务器

[root@localhost redis-4.0.1]# ./src/redis-cli save  #手动执行save命令,会阻塞服务器,直到保存完成提示“OK”
37337:M 14 Mar 14:17:55.514 * DB saved on disk
OK
[root@localhost redis-4.0.1]# ls -lih | grep dump.rdb
 36360655 -rw-r--r--  1 root root  157 3月  14 14:17 dump.rdb  #RDB转储文件保存成功

bgsave:执行该命令时,Redis会在后台异步进行快照操作,转储快照同时还可以响应客户端请求;Redis进程执行fork操作创建子进程,RDB持久化过程由子进程负责,完成后自动结束

但bgsave有个缺点,执行bgsave命令,服务器只提示“Background saving started”开始保存,但是不会提示什么时候保存完成,如果判断时候保存完成,需要查看Redis日志(如果配置并开启了服务器日志的话;否则就需要根据数据量大小来判断是否保存完成)

[root@localhost redis-4.0.1]# ./src/redis-cli bgsave #手动执行bgsave命令,系统开始异步转储RDB文件
Background saving started
[root@localhost redis-4.0.1]#            #可以发现bgsave命令不会阻塞操作
[root@localhost redis-4.0.1]# ls -lih | grep dump.rdb
 36360655 -rw-r--r--  1 root root  157 3月  14 14:17 dump.rdb  #RDB转储文件保存成功

自动触发:自动触发是由配置文件决定的,自动触发条件可以在redis.conf进行配置

[root@localhost redis-4.0.1]# pwd
/root/redis-4.0.1
[root@localhost redis-4.0.1]# vim redis.conf     #编辑Redis配置文件

...

save 900 1     #表示900 秒内如果至少有 1 个 key 的值变化,则进行数据转储
save 300 10    #表示300 秒内如果至少有 10 个 key 的值变化,则进行数据转储
save 60 10000  #表示60 秒内如果至少有 10000 个 key 的值变化,则进行数据转储

stop-writes-on-bgsave-error yes  #转储失败后是否允许Redis服务器继续接受数据,设置为no时将阻止Redis继续接收数据;所以为了配合自动转储,需要设置为yes

rdbcompression yes  #对于存储到磁盘中的快照,可以设置是否进行压缩存储;设置为yes可以减少转储文件占用磁盘的空间

rdbchecksum yes     #在存储快照后,我们还可以让redis使用CRC64算法来进行数据校验,但是这样做会增加大约10%的性能消耗。

二:AOF持久化

全量备份总是耗时的,有时候我们提供一种更加高效的方式AOF,工作机制很简单,redis会将每一个收到的写命令都通过write函数追加到文件中。通俗的理解就是日志记录

Redis服务器每次启动时,将自动读取aof文件恢复数据,思想数据的持久化

打开AOF持久化功能

[root@localhost redis-4.0.1]# pwd
/root/redis-4.0.1
[root@localhost redis-4.0.1]# vim redis.conf     #编辑Redis配置文件

...

appendonly yes                   #开启AOF持久化

appendfilename "appendonly.aof"  #配置AOF持久化文件名

appendfsync everysec             #配置AOF持久化策略

            #always    表示只要缓冲区中数据发生更改,则就将该数据写入到aof文件中
            #everysec  每秒写入把缓冲区中数据写入aof文件中(redis默认)
            #no        不做任何策略配置,将策略的配置交给操作系统,一般操作系统是等待缓冲区被占完之后,将数据写入aof文件中
[root@localhost redis-4.0.1]# pwd
/opt/pigmstoc/toc/database/Redis/redis-4.0.1
[root@localhost redis-4.0.1]# ls -lih | grep appendonly.aof   
 68934080 -rw-r--r--  1 root root    0 3月  14 14:39 appendonly.aof

测试AOF持久化功能:

我们可以通过一些简单的操作,来测试AOF文件是否记录了我们对数据库的操作

[root@localhost redis-4.0.1]# ./src/redis-cli SET testkey redis  #测试插入一个键
OK
[root@localhost redis-4.0.1]# cat appendonly.aof   #插入键的操作被成功记录到AOF文件
*2
$6
SELECT
$1
0
*3
$3
SET
$7
testkey
$5
redis

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值