Redis08-Redis的持久化

举报
码农飞哥 发表于 2021/05/29 12:18:19 2021/05/29
2.6k+ 0 0
【摘要】 前言 前面我们介绍了Redis数据库以及键空间。这一篇我们继续介绍一下Redis的持久化。Redis持久化的方式有两种,一种是RDB的方式,一种是AOF的方式。 RDB的方式 RDB是Redis DataBase的缩写。是Redis默认的持久化方式,它按照一定的时间将内存的数据以快照的形式保存到硬盘中,对应产生的数据文件是dump.rdb。通过配置文件中的save...

前言

前面我们介绍了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. 15分钟内至少有1个key改变
  2. 5分钟内至少有10个key改变
  3. 1分钟内至少有10000个key改变
    就会触发save命令,对快照进行保存。保存快照是通过一个单独的进程来进行保存的。

优点

  1. 只有一个文件dump.rdb,方便持久化
  2. 容灾性好,一个文件可以安全地保存到磁盘。
  3. 性能最大化,fork子进程来完成写操作,让主进程继续处理命令,所以是IO最大化,使用单独子进程进行持久化,主进程不会进行任何IO操作,保证了Redis的高性能。
  4. 相对于数据集大时,比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

  
 

如上所示:与aof备份相关的主要有三个配置,appendonly 配置用于指定是否开启aof备份,no的话表示不开启,yes的话表示开启。appendfilename配置用于指定aof日志文件名,这个一般不用改。appendfsync表示备份方式,其中:

  1. always方式表示一写命令就备份一次虽然安全,系统性能会降低,不推荐使用。
  2. everysec方式表示每一秒钟就备份一次,不管一秒钟变化了多少key,只备份一次,性能得到了一定的保护,推荐使用。
  3. no方式会查看当前服务器状态,如果状态良好,就进行备份(随机)。这种备份方式数据安全是没有保证的。
    三种备份方式
    性能上: always<everysec<no
    数据安全上:always<everysec<no
    在实际的生产中,我们应该同时使用两种持久化方式,一般情况下,当Redis重启的时候会优先载入aof文件来恢复原始的数据。

文章来源: feige.blog.csdn.net,作者:码农飞哥,版权归原作者所有,如需转载,请联系作者。

原文链接:feige.blog.csdn.net/article/details/108730057

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

作者其他文章

评论(0

抱歉,系统识别当前为高风险访问,暂不支持该操作

    全部回复

    上滑加载中

    设置昵称

    在此一键设置昵称,即可参与社区互动!

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。