Redis 的持久化机制是什么?各自的优缺点?_redis持久机制

Redis 的持久化机制是什么?各自的优缺点?_redis持久机制redis 持久化机制有两种:RDB 和 AOF。 RDB RDB 机制是对 redis 中的数据执行周期性的持久化。每个几分钟、几小时、几天生成 redis 内存中的数据的一份完整的快照。 AOF…

redis 的持久化机制

redis 持久化机制有两种:RDB 和 AOF。

RDB

RDB 机制是对 redis 中的数据执行周期性的持久化。每个几分钟、几小时、几天生成 redis 内存中的数据的一份完整的快照。

img

AOF

每条写入命令作为日志,写入 aof 文件中。现代操作系统中,写入文件不是直接写磁盘,会先写到 os cache,然后到一定时间再从 os cache 到磁盘文件。每隔 1 秒调用一次操作系统的 fsync 操作,强制将 os cache 中的数据,刷入磁盘文件中。

img

为了保证性能,会先写入 os cache 中,然后定期强制执行 fsync 操作将数据刷入磁盘。

原理:

  • 每台单机 redis 的数据量收到内存限制,所以 aof 不会无线增长;
  • 当数据超过内存限制的时候,会自动使用 LRU 算法将数据淘汰掉;
  • AOF 存放的是每条写入的命令,所以会不断的膨胀,当达到一定的时候,会做 rewrite 操作;
  • rewrite 操作:基于当时 redis 的内存中的数据,重新构造一个更小的 aof 文件,然后删除旧的 aof 文件。

img

总结:aof 被不断的追加,内存中的数据有最大限制,会被自动淘汰,当 aof 中的数据大于内存中数据时,就会执行 rewrite 操作,生成新的 aof 文件。

AOF 机制对每一条写入命令作为日志,以 append-only 的模式写入一个日志文件中,在 redis 重启的时候,可以通过回放 AOF 日志中的写入指令来重新构建整个数据集。

小结

通过 RDB 或者 AOF ,都可以将 redis 内存中的数据给持久化到磁盘上去,然后可以将这些数据备份到别的地方,比如阿里云、云服务。

如果 redis 挂了,服务器上的内存和磁盘上的数据都丢了,可以从云服务上拷贝回来,放到指定的目录下,然后重新启动 redis,redis 就会自动根据持久化数据文件中的数据,去恢复内存中的数据,继续对外提供服务。

如果同时使用 RDB 和 AOF 两种持久化机制,那么在 redis 重启的时候,会使用 AOF 来重新构建数据,因为 AOF 中的数据更加完整。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/6745.html

(0)
上一篇 2023-04-04
下一篇 2023-04-04

相关推荐

  • MYSQL 游标学习及使用实例「建议收藏」

    MYSQL 游标学习及使用实例「建议收藏」who?(游标是什么?)游标(cursor)官方定义:是系统为用户开通的一个数据缓冲区,存放sql执行结果。每个游标区都有一个名字,用户可以通过sql语句逐一从游标中获取记录,并赋值给变量,交由主语言

    2022-12-25
    163
  • 提升Python性能的30个关键参数

    提升Python性能的30个关键参数Python 是一种解释型语言,具有高度的互动性和易读性。但是,这也让 Python 在执行大量计算密集型和IO密集型任务时表现不佳。

    2023-12-11
    112
  • 分布式 | DBLE 之 SQL 解析[通俗易懂]

    分布式 | DBLE 之 SQL 解析[通俗易懂]作者:路路 热爱技术、乐于分享的技术人,目前主要从事数据库相关技术的研究。 本文来源:原创投稿 *爱可生开源社区出品,原创内容未经授权不得随意使用,转载请联系小编并注明来源。 数据库中间件与数据库有…

    2023-02-22
    154
  • Python工程师开发的网站有哪些?

    Python工程师开发的网站有哪些?Python是一种高级语言,被广泛用于各种程序开发领域,包括Web开发。今天我们将从多个方面来介绍Python工程师开发的网站有哪些。随着技术的不断发展,Python作为一种可伸缩的语言,成为了越来越多人喜欢的语言之一。现在,让我们来看看Python工程师开发的一些网站。

    2024-08-10
    32
  • 轻松入门Python脚本编写

    轻松入门Python脚本编写Python作为一种易用性和便捷性都很优秀的编程语言,一直备受广大程序员的喜爱。作为Python的入门教程,本文将为大家详细阐述Python脚本编写的基础知识,让大家从初学者到专业水平拥有一个良好的基础。

    2024-02-18
    86
  • Mysql: distinct去重 group by的区别「终于解决」

    Mysql: distinct去重 group by的区别「终于解决」distinct简单来说就是用来去重的,而group by的设计目的则是用来聚合统计的,两者在能够实现的功能上有些相同之处,但应该仔细区分。 单纯的去重操作使用distinct,速度是快于group…

    2023-02-04
    148
  • MySQL实战45讲之基础篇 – flowers「终于解决」

    MySQL实战45讲之基础篇 – flowers「终于解决」本文主要记录学习MySQL实战45讲之基础篇过程中一些新的收获,以及总结主要内容。其中包括SQL如何运行、日志系统、事务隔离、索引和锁等。

    2023-04-22
    158
  • 荣耀平板ⅴ7pro_荣耀平板5值得买吗

    荣耀平板ⅴ7pro_荣耀平板5值得买吗  上个月荣耀发布一款新品平板电脑——荣耀平板V6,现在距离官方给出公布售价的时间只有几天。我对这款平板电脑可以说是蠢蠢欲动,就希望它的售价不要太高。这款平板电脑可以说是集好用与好玩于一身,对我这种…

    2023-03-09
    154

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注