目录
一、RDB持久化方式(默认开启)
RDB方式其实就是对内存中数据库状态进行快照,将数据库状态保存到磁盘中做持久化处理,生成一个压缩二进制dump.rdb文件。这样,关闭redis时内存中的数据不会消失,当再次重启redis时,会自动读取dump.rdb文件,还原RDB文件中的数据库状态。
1.1、手动执行命令生成
有两个命令可以生成 RDB 文件
save
:会阻塞redis服务器进程,直到RDB文件创建完毕为止,在阻塞期间,服务器不能处理任何命令请求;
bgsave
:会派生出一个子进程,由子进程负责创建RDB文件,服务器进程(父进程)继续处理请求,创建RDB文件结束之前,客户端发送的bgsave和save命令会被服务器拒绝;
1.2、配置方式自动生成
在redis.conf
配置文件中,设置服务器save配置,让服务器每隔一段时间自动执行一次bgsave命令,支持多个保存条件,但只要任意一个条件被满足,服务器就会执行 bgsave命令。
默认配置信息如下 ,意思分别为:
1、save 900 1
:表示900秒内对数据库进行至少1次修改,则执行bgsave
2、save 300 10
:表示300秒内对数据库进行至少10次修改,则执行bgsave
3、save 60 10000
:表示60秒内对数据库进行至少10000次修改,则执行bgsave
4、dbfilename dump.rdb
:表示持久化文件名称,可以自定义
5、dir ./
:表示持久化文件所在路径,可以自定义,默认跟客户端启动目录一致
# save ""
save 900 1
save 300 10
save 60 10000
省略......
# The filename where to dump the DB
dbfilename dump.rdb
省略.....
# Note that you must specify a directory here, not a file name.
dir ./
在/usr/local/redis/bin
目录下启动客户端,则dump.rdb就生成在bin
下
[root@localhost bin]# pwd
/usr/local/redis/bin
[root@localhost bin]# ll
总用量 42552
-rw-r--r--. 1 root root 92 6月 15 23:49 dump.rdb
-rwxr-xr-x. 1 root root 5944824 6月 14 23:55 redis-benchmark
-rwxr-xr-x. 1 root root 10362208 6月 14 23:55 redis-check-aof
-rwxr-xr-x. 1 root root 10362208 6月 14 23:55 redis-check-rdb
-rwxr-xr-x. 1 root root 6465816 6月 14 23:55 redis-cli
-rw-r--r--. 1 root root 61798 6月 15 13:51 redis.conf
lrwxrwxrwx. 1 root root 12 6月 14 23:55 redis-sentinel -> redis-server
-rwxr-xr-x. 1 root root 10362208 6月 14 23:55 redis-server
二 、AOF持久化方式(默认关闭)
AOF 持久化方式默认是关闭的,它会把每条命令都写入.aof
文件中(类似 mysql 的 binlog 日志),只记录写命令的数据库状态。
2.1 、开启AOF持久化
在redis.conf
配置文件中,appendonly
修改为yes
即可开启AOF持久化,appendfilename
为文件名,可以自定义,appendfsync everysec
为默认刷新方式
appendonly no
# The name of the append only file (default: "appendonly.aof")
appendfilename "appendonly.aof"
# If unsure, use "everysec".
# appendfsync always
appendfsync everysec
# appendfsync no
2.2、效果查看
修改配置为yes
后,重启redis,即会生成appendonly.aof
文件,set一个值,则可见已经写到aof文件中做持久化处理了
[root@localhost bin]# ./redis-cli
127.0.0.1:6379> set myname pandafox
OK
127.0.0.1:6379> quit
[root@localhost bin]# cat appendonly.aof
*2
$6
SELECT
$1
0
*3
$3
set
$6
myname
$8
pandafox
2.3、三种文件刷新方式
appendfsync always
:每提交一个修改命令都调用 fsync 刷新到 AOF 文件,非常慢但很安全;
appendfsync everysec
:每秒钟都调用 fsync 刷新到 AOF 文件,很快但可能会丢失一秒以内的数据(默认方式)
appendfsync no
:依靠OS进行刷新,redis不主动刷新AOF,最快但间隔时间长,数据安全性差
2.4、数据恢复过程
服务器在启动时,通过载入和执行AOF文件中保存的命令来还原服务器关闭之前的数据库状态。如果同时启用了RDB和AOF方式,则AOF优先,启动时只加载AOF文件恢复数据。