你真的懂Redis的5种基本数据结构吗?这些知识点或许你还需要看看(图文并茂,浅显易懂,建议收藏)
802
2022-05-28
前言
前面我们介绍了Redis数据库以及键空间。这一篇我们继续介绍一下Redis的持久化。Redis持久化的方式有两种,一种是RDB的方式,一种是AOF的方式。
RDB的方式
RDB是Redis DataBase的缩写。是Redis默认的持久化方式,它按照一定的时间将内存的数据以快照的形式保存到硬盘中,对应产生的数据文件是dump.rdb。通过配置文件中的save参数可以定义快照的周期。我们可以在 redis.conf配置文件中找到相关的配置,配置如下所示:
# In the example below the behaviour will be to save: # after 900 sec (15 min) if at least 1 key changed # after 300 sec (5 min) if at least 10 keys changed # after 60 sec if at least 10000 keys changed save 900 1 save 300 10 save 60 10000 # RDB 持久化文件 dbfilename "dump.rdb" # Note that you must specify a directory here, not a file name. dir "/srv/redis/redis-6379"
1
2
3
4
5
6
7
8
9
10
11
12
13
14
默认的快照保存规则是,满足如下三个条件中的一条即可:
15分钟内至少有1个key改变
5分钟内至少有10个key改变
1分钟内至少有10000个key改变
就会触发save命令,对快照进行保存。保存快照是通过一个单独的进程来进行保存的。
优点
只有一个文件dump.rdb,方便持久化
容灾性好,一个文件可以安全地保存到磁盘。
性能最大化,fork子进程来完成写操作,让主进程继续处理命令,所以是IO最大化,使用单独子进程进行持久化,主进程不会进行任何IO操作,保证了Redis的高性能。
相对于数据集大时,比AOF的持久化效率更高。
缺点
数据安全性低,RDB是间隔一段时间进行持久化的,如果持久化之间Redis发生故障,会发生数据丢失,所以这种方式更适合数据要求不严谨的时候。
AOF持久化
AOF持久化,则是将Redis执行的每次写命令记录到单独的日志文件中,当重启Redis会重新从持久化的日志文件中恢复数据。默认的话是不启动AOF持久化的,并且默认的aof文件名是appendonly.aof。让我们来看看 redsis.conf配置文件中的默认配置:
#默认不开启aof备份 appendonly no # The name of the append only file (default: "appendonly.aof") #默认的aof日志文件名是appendonly.aof appendfilename "appendonly.aof" # If unsure, use "everysec". #默认的每秒备份一次 # appendfsync always appendfsync everysec # appendfsync no
1
2
3
4
5
6
7
8
9
10
11
12
如上所示:与aof备份相关的主要有三个配置,appendonly 配置用于指定是否开启aof备份,no的话表示不开启,yes的话表示开启。appendfilename配置用于指定aof日志文件名,这个一般不用改。appendfsync表示备份方式,其中:
always方式表示一写命令就备份一次虽然安全,系统性能会降低,不推荐使用。
everysec方式表示每一秒钟就备份一次,不管一秒钟变化了多少key,只备份一次,性能得到了一定的保护,推荐使用。
no方式会查看当前服务器状态,如果状态良好,就进行备份(随机)。这种备份方式数据安全是没有保证的。
三种备份方式
性能上: always 数据安全上:always 在实际的生产中,我们应该同时使用两种持久化方式,一般情况下,当Redis重启的时候会优先载入aof文件来恢复原始的数据。 Redis 任务调度
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。