redis持久化的两种方式(RDB与AOF)

一、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 615 23:49 dump.rdb
-rwxr-xr-x. 1 root root  5944824 614 23:55 redis-benchmark
-rwxr-xr-x. 1 root root 10362208 614 23:55 redis-check-aof
-rwxr-xr-x. 1 root root 10362208 614 23:55 redis-check-rdb
-rwxr-xr-x. 1 root root  6465816 614 23:55 redis-cli
-rw-r--r--. 1 root root    61798 615 13:51 redis.conf
lrwxrwxrwx. 1 root root       12 614 23:55 redis-sentinel -> redis-server
-rwxr-xr-x. 1 root root 10362208 614 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文件恢复数据。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值