Redis提供了两种持久化方式:RDB和AOF。下面分别进行介绍。
RDB
简单来说,RDB是指将某个时刻的内存数据存储到本地磁盘上一个叫做 dump.rdb 的文件中。它是一种快照存储持久化方式,在Redis服务启动的时候,会从该文件中恢复数据。 一般有两种方式开启RDB持久化:配置文件和Redis命令。
先看配置文件。(以下操作皆在Linux环境中进行)
可以使用 whereis redis 指令查看Redis配置文件的所在路径。
找到配置文件 redis.conf 后,切换到root用户,使用 cat 指令打开配置文件。
这是在配置文件中进行RDB的配置,我们可以根据实际情况修改save指令。save 900 1
save 300 10
save 60 10000
//根据配置文件中save指令格式以及注释可以知道,
//第一条指令意为:在900秒后,如果至少有1个键被改变,那么就会进行持久化,
//后面两条指令同理。
再看如何使用客户端命令开启RDB。
redis-server 开启Redis服务,redis-cli 连接Redis客户端。
可以使用 save 命令来开启RDB,也可以使用bgsave命令。
-
在客户端使用save命令请求服务器进行数据持久化时,服务器会阻塞其它客户端的请求,直到持久化完成。一旦数据量太大,持久化时间会很长,其它请求又被阻塞,会严重影响性能,所以不要轻易在生产环境使用save命令。
-
使用bgsave时,Redis会调用系统函数fork()创建出一个子进程来进行持久化,完成之后子进程便会销毁,但是在fork出子进程期间,Redis仍然不能接受其它客户端请求。
AOF持久化的原理是:记录下客户端对服务器的每一次写操作,并将这些写操作存进 appendonly.aof 文件中,在Redis服务器重启时,加载并执行这些写操作,以此来恢复数据。
我们同样可以在Redis配置文件中进行AOF配置。
指令 appendonly no 表示AOF持久化是关闭的,这也说明Redis默认使用RDB。
可以根据实际来选择使用哪种模式,否则everysec是默认的AOF模式。Redis支持三种不同类型的AOF模式。
appendfsync always //表示客户端的每一个写操作都记录到aof文件中。
appendfsync everysec //每秒写入一次,是默认的AOF模式。
appendfsync no //什么时候写入aof文件由操作系统来处理,Redis不负责。
同样,我们也可以通过命令行来开启AOF,命令如下。
AOF是一种只记录写入命令的追加式日志文件,由于每个写入命令都会被追加到aof文件中,所以AOF的数据一致性比RDB高,持久化速度更快。config set appendonly yes // 开启AOF
config set appendfsync no/always/everysec //选择模式
//顺带一提,可在Redis客户端使用config get dir查看rdb和aof文件的路径。
如果觉得这篇文章有用的话,可以扫码关注一下公众号哦。
网友评论