关于Redis持久化的深入探究

 更新时间:2023年05月21日 11:54:52   作者:一天睡20个小时  
Redis持久化是将内存中的数据保存到磁盘,以防止数据丢失。Redis提供了两种持久化方式:RDB和AOF,本文将给大家详解介绍Redis持久化,感兴趣的同学可以跟着小编一起来学习
(福利推荐:【腾讯云】服务器最新限时优惠活动,云服务器1核2G仅99元/年、2核4G仅768元/3年,立即抢购>>>:9i0i.cn/qcloud

(福利推荐:你还在原价购买阿里云服务器?现在阿里云0.8折限时抢购活动来啦!4核8G企业云服务器仅2998元/3年,立即抢购>>>:9i0i.cn/aliyun

Redis持久化

官网地址:Redis persistence | Redis

Redis持久化是将内存中的数据保存到磁盘,以防止数据丢失。Redis提供了两种持久化方式:RDB和AOF。

1、为什么需要持久化?

reids是内存数据库,内存一断电或者宕机数据就消失了没有了,需要redis中的数据长期持有,它重启宕机恢复过来之后还是能从磁盘读回之前的数据

使用RDB(Redis Database)或者AOF(Append Only File)还可以RDB和AOF混合使用将数据写入磁盘

2、RDB(Redis Database)

2.1 官网介绍

RDB(Redis 数据库):RDB 持久性以指定的时间间隔执行数据集的时间点快照

2.2 什么是RDB

RDB持久化方式将Redis服务器中某个时间点的所有键值对集合写入一个快照文件。这个快照文件可以在Redis发生宕机时用于数据恢复。

RDB持久化方式的优点是在恢复数据时速度较快,缺点是如果Redis服务器宕机时未保存快照文件,会丢失部分数据。

为了解决这个问题,可以使用自动备份机制和设置持久化时间来进行保护。在Redis.conf文件中可以设置save参数,表示在多长时间内,至少有n个key发生变化时,就会启动一次自动备份。同时也可以设置备份目录和备份文件名,定期备份Redis中的数据,建议每天进行一次。

2.3 操作步骤

  • 按照redis.conf里配置文件的save

    5秒钟修改两次

 433 # save 3600 1 300 100 60 10000
 434   save 5 2
  • 修改dump文件保存路径

    自定义路径的文件不能为空,得提前去创建好

  • 自定义路径

3、AOF(Append Only File)

3.1 什么是AOF?

以日志的形式来记录每一个写操作,将redis执行过的所有写指令记录下来(读操作不记录),只许追加文件但不可以改写文件,redis启动之初会读取该文件重新构建数据,换言之,redis重启的话就根据日志文件的内容将写指令从前到后执行一次以完成数据的恢复工作

默认情况下,redis是没有开启AOF(append only file)的。开启AOF功能需要设置配置:appendonly yes

3.2 AOF持久化方式

AOF持久化方式是通过记录Redis执行过的写命令来恢复数据。当Redis服务器重启时,会通过执行AOF文件中的命令来恢复数据。AOF持久化方式相对于RDB持久化方式而言,可靠性更高,但磁盘消耗较大。

用户可以通过配置文件设置AOF文件的名称和同步方式等参数,有always、everysec和no三种同步策略可供选择。当使用always策略时,每次写操作完成后都会立即将数据同步到磁盘中;当使用everysec策略时,Redis会每秒钟同步一次到磁盘中;而使用no策略时,Redis会尽可能把同步写操作的负载分担到系统的后台写任务中去。

为了保证Redis的数据安全性,在使用AOF持久化方式时,可以选择使用Redis Sentinel来进行管理和监控。这样可以在主节点出现问题时,自动进行切换,保证Redis服务不受影响。

3.3 AOF能干嘛?

快照功能并不是非常耐久(dura ble): 如果 Redis 因为某些原因而造成故障停机, 那么服务器将丢失最近写入、且仍未保存到快照中的那些数据。 从 1.1 版本开始, Redis 增加了一种完全耐久的持久化方式: AOF 持久化。

你可以在配置文件中打开AOF方式:

appendonly yes

从现在开始, 每当 Redis 执行一个改变数据集的命令时(比如 SET), 这个命令就会被追加到 AOF 文件的末尾。这样的话, 当 Redis 重新启时, 程序就可以通过重新执行 AOF 文件中的命令来达到重建数据集的目的。

4、RDB-AOF混合持久化

你也可以同时开启两种持久化方式, 在这种情况下, 当redis重启的时候会优先载入AOF文件来恢复原始的数据,因为在通常情况下AOF文件保存的数据集要比RDB文件保存的数据集要完整

4.1 RDB 的优点和缺点

优点

  • 对于大型数据集,RDB 恢复时的速度比 AOF 要快。
  • RDB 文件可以作为备份数据库。

缺点

  • 如果 Redis 发生故障,最后一次持久化之后的所有更改都会丢失。
  • RDB 文件的大小可能比 AOF 文件大。

4.2 AOF 的优点和缺点

优点

  • 对于小型数据集,AOF 恢复速度更快。
  • AOF 文件保存了 Redis 数据库的完整操作记录,即使 Redis 发生故障,也可以尽可能地少丢失数据。

缺点

  • AOF 文件通常比 RDB 文件更大。
  • 恢复数据所需的时间可能比 RDB 更长。

 4.3 数据恢复顺序和加载流程

在同时开开启rdb和aof持久化,重启是只会加载aof文件,不会加载rdb文件

4.4 同时开启两种持久化方式

在这种情况下,当redis重启的时候会优先载入AOF文件来恢复原始的数据,因为在通常情况下AOF文件保存的数据集比RDB文件保存的数据集要完整

RDB的数据不实,同时使用两者是服务器重启也只会找AOF文件,那要不要只使用AOF呢?

作者建议不要,因为RDB跟适合用于备份数据库(AOF在不断变化不好备份),留着RDB作为一个万一的手段

4.5 推荐方式

RDB+AOF混合方式

结合了RDB和AOF的优点,既能快输加载又能避免丢失过多的数据

  • 开启 RDB+AOF 的混合持久化方式。你可以通过设置 aof-use-rdb-preamble 来开启这种持久化方式。
aof-use-rdb-preamble yes

先使用RDB进行快照存储,然后使用AOF持久化记录所有写操作,当重写策略满足或手动触发重写的时候,将最新的数据存储为新的RDB记录。这样的话,重启服务器的时候会从RDB和AOF两部分恢复数据,既能保证数据完整性,又能提高恢复数据的性能

5、注意事项

在实际应用中,使用Redis持久化时需要注意以下问题:

  • 定期备份:定期备份Redis中的数据。
  • 备份机和生产机不能共存:为避免数据丢失,在备份机和生产机之间需要进行物理隔离。
  • 恢复备份数据时需要重启Redis:使用RDB方式备份数据时,恢复备份数据需要重启Redis服务。而使用AOF方式备份数据时,恢复备份数据则需要将AOF文件导入到一个新的Redis实例中。在进行恢复操作时,需要特别小心,以避免损坏数据。
  • 合理配置参数:合理设置最大连接数和最大数据包大小,以避免出现Redis性能瓶颈。可以通过修改Redis.conf文件来设置这些参数。
  • 而使用AOF方式备份数据时,恢复备份数据则需要将AOF文件导入到一个新的Redis实例中。在进行恢复操作时,需要特别小心,以避免损坏数据。
  • 合理配置参数:合理设置最大连接数和最大数据包大小,以避免出现Redis性能瓶颈。可以通过修改Redis.conf文件来设置这些参数。

以上就是关于Redis持久化的深入探究的详细内容,更多关于Redis持久化的资料请关注程序员之家其它相关文章!

相关文章

  • redis反序列化报错原因分析以及解决方案

    redis反序列化报错原因分析以及解决方案

    这篇文章主要介绍了redis反序列化报错原因分析以及解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-03-03
  • Redis Cluster的图文讲解

    Redis Cluster的图文讲解

    今天小编就为大家分享一篇关于Redis Cluster的图文讲解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-01-01
  • Redis延迟队列和分布式延迟队列的简答实现

    Redis延迟队列和分布式延迟队列的简答实现

    在我们的工作中,很多地方使用延迟队列,比如订单到期没有付款取消订单,制订一个提醒的任务等都需要延迟队列,那么我们需要实现延迟队列,本文就来介绍一下如何实现,感兴趣的可以了解一下
    2021-05-05
  • redis中key使用冒号分隔的原理小结

    redis中key使用冒号分隔的原理小结

    Redis是一种高性能的键值对非关系型数据库,通过redis不同类型命令可以为其中的键指定不同的数据类型,其中每个键的命名规范通常使用冒号符号分隔字符串,本文主要介绍了redis中key使用冒号分隔的原理小结,感兴趣的可以了解一下
    2024-01-01
  • redis中删除操作命令

    redis中删除操作命令

    这篇文章主要介绍了redis中删除操作命令,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-02-02
  • redis简介_动力节点Java学院整理

    redis简介_动力节点Java学院整理

    这篇文章主要介绍了redis简介,Redis是一个开源的,先进的 key-value 存储可用于构建高性能,可扩展的 Web 应用程序的解决方案,有兴趣的可以了解一下
    2017-08-08
  • Windows下redis下载、redis安装及使用教程

    Windows下redis下载、redis安装及使用教程

    redis 提供了多种数据类型来支持不同的业务场景,所以经常使用在分布式锁中,今天给大家讲解redis安装及使用教程,感兴趣的朋友跟随小编一起看看吧
    2021-06-06
  • Redis?Server启动过程的详细步骤

    Redis?Server启动过程的详细步骤

    本文主要介绍了Redis?Server启动过程的详细步骤,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-02-02
  • Redis性能大幅提升之Batch批量读写详解

    Redis性能大幅提升之Batch批量读写详解

    这篇文章主要给大家介绍了关于Redis性能大幅提升之Batch批量读写的相关资料,文中介绍的非常详细,对大家具有一定的参考学习价值,需要的朋友们下面来跟着小编一起来学习学习吧。
    2017-06-06
  • Redis解决跨域存取Session问题

    Redis解决跨域存取Session问题

    本文主要介绍了Redis解决跨域存取Session问题,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-04-04

最新评论

?


http://www.vxiaotou.com