背景
Redis是一个内存数据库,如果没有配置持久化,redis重启后数据就全丢失 因此开启redis的持久化功能,将数据保存到磁盘上,当redis重启后,可以从磁盘中恢复以前的数据。
两种持久化方式
RDB (Redis DataBase),redis默认采用RDB 。
AOF (append only file)。
RDB持久化方式介绍
网址:https://baijiahao.baidu.com/s?id=1654694618189745916&wfr=spider&for=pc
1、在指定的时间间隔内,如果有n次数据的变动,那么在第n次数据变动的结束的时候就讲当前redis内存中的数据以文件的方式保存 下来。【是内存中的全部数据,全量备份】
2、默认的文件名为dump.rdb,新的rdb文件会覆盖老的rdb文件。
3、RDB产生快照的方式有三种
save方式【较少使用】
会阻塞当前Redis服务器的主进程,执行save命令期间,Redis不能处理其他命令,直到RDB过程完成为止
bgsave方式【较多使用】
当前redis主进程会fork创建子进程,RDB持久化过程由子进程负责,会在后台异步进行快照操作,快照同时还可以响应客户端请求
自动化方式【较多使用】
在redis.conf配置文件中配置,配置触发 Redis的 RDB 持久化条件
比如在redis.conf中增加"save m n",表示m秒内数据集存在n次修改时,自动触发bgsave
注:save和bgsave是redis服务端的命令,可以直接调用该命令就能执行RDB持久化
4、自动触发bgsave的条件
满足m秒n数据集有n次修改
redis从服务器同步数据的时候,会发送sync指令执行同步操作,master主服务器就会执行bgsave
5、优点
RDB文件紧凑,全量备份,适合用于进行备份和灾难恢复。
在恢复大数据集时的速度比 AOF 的恢复速度要快。
生成的是一个紧凑压缩的二进制文件。
6、缺点
每次快照是一次全量备份,fork子进程进行后台操作,子进程存在开销。
在快照持久化期间修改的数据不会被保存,可能丢失数据。
自动化配置文件的修改
1、cd /usr/local/redis/conf
2、vim redis.conf
3、重启redis服务端
编辑如下:
#任意ip的客户端都可以访问
bind 0.0.0.0
#以守护进程的方式启动客户端
daemonize yes
#客户端登陆密码
requirepass Lianglinxxxyyy123456
#日志文件路径
logfile "/usr/local/redis/log/redis.log"
#rdb持久化文件名
dbfilename xdclass.rdb
#持久化文件存放的路径
dir /usr/local/redis/data
#每10秒内修改一次就持久化一次
save 10 1
#开启压缩,mor
rdbcompression yes
rdbchecksum yes
复制
save方法执行RDB图例
bgsave方法生成RDB图例