首页 > 数据库 >redis的2种持久化方式:aof和rdb

redis的2种持久化方式:aof和rdb

时间:2023-08-29 09:03:35浏览次数:42  
标签:aof 持久 AOF Redis rdb redis 文件 RDB 数据

redis的 rdb 和 aof 持久化方式的区别及使用场景

原创 陈烨123 java知路 2023-07-04 22:25 发表于湖北

Redis提供了两种持久化方式:RDB(Redis Database)和AOF(Append Only File)。

RDB持久化是通过周期性地将Redis数据集快照写入磁盘上的二进制文件实现的。在触发持久化时,Redis会fork一个子进程,将内存中的数据集写入临时文件,待写入完成后,再将临时文件替换为原有RDB文件,并删除旧的RDB文件。RDB持久化的特点是文件紧凑、恢复速度快,但可能会丢失最后一次持久化之后的数据。

AOF持久化则是将每条Redis操作命令写入日志文件中,以文本形式保存。AOF文件在Redis启动时会被读取并重新构建数据集。AOF持久化的特点是可以保证数据的完整性和一致性,但相比于RDB持久化,文件更大,恢复速度慢。

两种持久化方式各有优势,选择哪种方式取决于应用场景和需求。一般来说,如果对数据的完整性和一致性要求较高,可以选择AOF持久化;如果对数据的恢复速度要求较高,可以选择RDB持久化。此外,也可以同时使用两种持久化方式,以提高数据的安全性和可靠性。

 

除了RDB和AOF持久化,Redis还提供了一种混合持久化方式,即RDB和AOF的结合。在混合持久化模式下,Redis会使用RDB持久化进行快照备份,并使用AOF持久化记录数据的变动。

在持久化模式为混合持久化时,Redis首先会执行RDB快照持久化,将内存中的数据保存到磁盘上的RDB文件中。然后,Redis会开启一个AOF文件,记录接下来的所有写操作命令。这样,在Redis重启时,首先会通过加载RDB文件来快速还原数据集,然后再执行AOF文件中的命令来恢复数据的完整性和一致性。

混合持久化的优势在于可以兼顾RDB和AOF持久化的优点。通过RDB持久化,可以获得更快的数据恢复速度和更紧凑的文件大小;通过AOF持久化,可以保证数据的完整性和一致性。不过,在持久化模式为混合持久化时,Redis的写性能可能会稍微下降,因为需要同时执行RDB和AOF两种持久化操作。

选择合适的持久化方式取决于数据的重要性、应用的可用性需求以及对性能的要求。可以根据实际情况进行权衡和选择,确保数据安全可靠并且满足应用的需求。

 

RDB持久化是指将Redis的数据集快照保存到磁盘上的RDB文件中。RDB文件是一个二进制文件,它保存了Redis在某个时间点上的数据状态。RDB持久化适用于备份和数据恢复,它可以在Redis重启时快速加载数据集来恢复数据。RDB持久化的优点是备份速度快,文件体积小,适合用于大规模数据集和快速恢复需求的场景。但是,RDB持久化有一个缺点,就是如果Redis发生故障,最后一次RDB快照持久化之后的数据会丢失。

AOF持久化是指将Redis的所有写操作命令追加到一个AOF文件中,以保证数据的完整性和一致性。AOF文件是一个追加写的日志文件,它记录了Redis的所有写操作命令。在Redis重启时,Redis会读取AOF文件中的命令来还原数据集。AOF持久化适用于数据安全和持久化的需求,它可以保证数据的完整性,并且可以通过AOF重写功能来减小AOF文件的大小。AOF持久化的缺点是对写操作的性能有一定的影响,而且AOF文件通常比RDB文件更大。

根据实际的需求和场景,可以选择适合的持久化模式。如果对数据的实时性要求较高,可以选择AOF持久化;如果对节省磁盘空间和快速恢复数据有要求,可以选择RDB持久化或混合持久化。另外,还可以结合使用RDB持久化和AOF持久化,以提高数据的安全性和可靠性。

推荐阅读

百万数据excel导出功能怎么做

为什么企业喜欢用cenOS而不是ubuntu

mysq 和redis 数据一致性有哪些解决方案

面试题问到离职原因,怎么回复

springboot 高级教程 如何优雅使用redission分布式锁

nginx配置负载均衡的服务宕机了,怎么配置高可用

加群交流

图片

 

陈烨123

赞赏二维码喜欢作者

阅读 391

标签:aof,持久,AOF,Redis,rdb,redis,文件,RDB,数据
From: https://www.cnblogs.com/cherishthepresent/p/17663799.html

相关文章

  • Redis 为什么这么快?
    前言  作为一名后端软件工程师,工作中你肯定和Redis打过交道。但是Redis为什么快呢?很多人只能答出Redis因为它是基于内存实现的,但是对于其它原因都是模棱两可。那么今天就一起来看看是Redis为什么快吧:         Redis为什么这么快? 一、基于内......
  • Redis数据持久化介绍
    Redis存储配置数据持久化,开启aof后,配置了aof重写规则,但aof文件仍然持续增长,当aof数据文件增长过大时,需要进行手动清理。本文意为手动清理aof文件提供帮助。同时对rdb和aof数据存储进行说明。1. Redis数据持久化介绍1.1. RDB数据存储RDB(RedisDatabase)通过快照的形式将数据保......
  • Python分享之redis(3)
    3、List操作redis中的List在在内存中按照一个name对应一个List来存储lpush(name,values)#在name对应的list中添加元素,每个新的元素都添加到列表的最左边r.lpush("list_name",2)r.lpush("list_name",3,4,5)#保存在列表中的顺序为5,4,3,2rpush(name,values)#同lpush,但每个新的元素......
  • Redis缓存高可用集群(3.1)
    1、Redis集群方案比较哨兵模式在redis3.0以前的版本要实现集群一般是借助哨兵sentinel工具来监控master节点的状态,如果master节点异常,则会做主从切换,将某一台slave作为master,哨兵的配置略微复杂,并且性能和高可用性等各方面表现一般,特别是在主从切换的瞬间存在访问瞬断的情况......
  • Redis从入门到放弃(11):雪崩、击穿、穿透
    1、前言Redis作为一款高性能的缓存数据库,为许多应用提供了快速的数据访问和存储能力。然而,在使用Redis时,我们不可避免地会面对一些常见的问题,如缓存雪崩、缓存穿透和缓存击穿。本文将深入探讨这些问题的本质,以及针对这些问题的解决方案。2、缓存雪崩2.1、问题描述在某个时间......
  • docker 启动redis 启动配置文件可以去网上查找一篇
    dockerrun--privileged=true-d--nameredis-p6379:6379-v/Users/zs/docker/redis/conf/redis.conf:/etc/redis/redis.conf-v/Users/zs/docker/redis/data:/dataredisredis-server/etc/redis/redis.conf   configurl参考如下 https://blog.csdn.net/xuyan......
  • Redisson幂等校验例子
    在添加接口增加幂等校验,防止用户在短时间内重复调用添加接口importorg.apache.commons.lang3.ArrayUtils;importorg.aspectj.lang.JoinPoint;importorg.aspectj.lang.annotation.Aspect;importorg.aspectj.lang.annotation.Before;importorg.aspectj.lang.annotation.Point......
  • 面试官:如何遍历 Redis 中的海量数据?
    来源:https://www.toutiao.com/article/6697540366528152077/前言有时候我们需要知道线上的redis的使用情况,尤其需要知道一些前缀的key值,让我们怎么去查看呢?今天给大家分享一个小知识点!事故产生因为我们的用户token缓存是采用了【user_token:userid】格式的key,保存用户的token......
  • 服务启动连接redis报错问题
    报错截图如下1,该报错为redis认证问题,也就是需要redis登录密码,需要在配置文件redis配置中,需填写密码2,对于redis的修改有一下操作 2.1,关闭redis的保护模式:打开redis的配置文件,redis.conf文件,找到protected-mode,改成no, 2.2,设置redis密码,requirepass***  到redis的......
  • Redis中文乱码解决方案
    问题描述刚开始学Redis,当我存入中文并想要读取时发现控制台上显示的是乱码......