首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Redis的持久化策略RDB和AOF

Redis的持久化策略RDB和AOF

作者头像
用户10125653
发布于 2022-11-10 13:54:53
发布于 2022-11-10 13:54:53
3910
举报
文章被收录于专栏:changechange

介绍

众所周知,redis是一个内存数据库,是一个经典的NOSQL类型的数据库。

我们常常拿redis来当成缓存,这得益于它存储数据的位置在内存中,这样在进行取数时,不用再进行磁盘IO,速度也会大大增加。

但是,也正是它存储在内存中,服务器若是断点、宕机,内存中的数据岂不是没有了。所以,redis还有它自己的持久化策略,将自己内存中的数据保存一份在磁盘中,以备不时之需。

RDB策略(默认)

rdb持久化策略,每隔一段时间将内存中的数据保存下来。等下次redis启动,就会自动加载这个文件的数据到内存中,进行恢复。

时间间隔、文件名都是可以设置的,修改redis.conf

代码语言:javascript
AI代码解释
复制
################################ SNAPSHOTTING  ################################
# 当900秒内至少有1个键值对发生变动,触发持久化
save 900 1
# 当300秒内至少有10个键值对发生变动,触发持久化
save 300 10
# 当60秒内至少有10000个键值对发生变动,触发持久化
save 60 10000

# 转储数据库的文件名
dbfilename dump.rdb

# 持久化文件的目录
dir ./

此外,执行flushall命令清空数据库时,以及执行shutdown命令等手段退出Redis时,都会直接触发持久化。

AOF策略

AOF全称为Append Only File,指的是当我们执行每一条redis命令时(查询不会记录),都会追加到AOF文件的末尾。等下次redis启动时,redis会重新执行AOF文件中的命令,用来恢复数据。

在我们执行一条redis命令时,这条命令会先保存在一个叫做oscache的缓存,进而再保存至AOF文件当中。

由于AOF不是默认的持久化方式,我们需要在配置文件中打开它

代码语言:javascript
AI代码解释
复制
# 打开AOF,可以和RDB一起使用
appendonly no

# 这是AOF追加命令的三种策略,触发一个叫做fsync的指令追加命令
# appendfsync always
appendfsync everysec
# appendfsync no

# 重写机制
# 当AOF文件大于64mb,并且比上一次重写的文件体积大了至少一倍,就会AOF重写
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb

追加命令的三种策略

  • always: 每次有新的修改数据的命令,就会将缓冲区内的命令同步追加到AOF文件,十分安全,但是效率低
  • everysec:默认 每秒将缓冲区内的命令同步追加到AOF文件,但是无法做到实时持久化,还是会可能丢失一秒的数据
  • no: 交给操作系统来决定什么时候去同步追加数据

重写机制 当命令一直持续不断的追加到AOF文件当中,文件会变得越来越大。所以就有了一个重写机制,它能将当前的AOF文件中的命令进行优化,重新恢复到最小指令集文件,这样文件的大小就会变小,在redis重启后,也能快速的恢复数据。

结语

RDB和AOF的优缺点

所以,如何选择RDB和AOF,需要在数据准确度还是数据恢复的速度上进行考虑。当然,如果有需要,都启用也是可以的。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-04-02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
深入理解 Redis 持久化机制:RDB 与 AOF 的设计与实践
Redis 作为一款高性能的内存数据库,其数据默认存储在内存中。内存的易失性意味着一旦服务器宕机或重启,所有数据都会丢失。为了解决这个问题,Redis 设计了完善的持久化机制,能够将内存中的数据持久化到磁盘,保证数据的安全性。本文将深入解析 Redis 的两种核心持久化方式(RDB 和 AOF),对比其优缺点,并提供生产环境的配置建议。
tcilay
2025/08/05
4280
Redis的持久化策略RDB和AOF
我们常常拿redis来当成缓存,这得益于它存储数据的位置在内存中,这样在进行取数时,不用再进行磁盘IO,速度也会大大增加。
半月无霜
2023/03/03
4200
Redis 持久化详解
在默认情况下, Redis 将数据库快照保存在名字为dump.rdb的二进制文件中。 你可以对 Redis 进行设置, 让它在“ N 秒内数据集至少有 M 个改动”这一条件被满足时, 自动保存一次数据集。 你也可以通过调用 SAVE或者 BGSAVE , 手动让 Redis 进行数据集保存操作。 这种持久化方式被称为快照 snapshotting.
斯武丶风晴
2020/05/18
2760
Redis 持久化详解
Redis 持久化机制
持久化数据,也就是将内存中的数据写入到硬盘里,大部分原因是为了之后重用数据(比如重启机器、机器故障后恢复数据),或是为了防止系统故障而将数据备份到远程。
happyJared
2019/08/25
8040
Redis持久化策略分析:理解、配置与优化
今日推荐 《MySQL体系结构解密:深入探索数据库内部工作原理的奥秘》这篇文章介绍了MySQL体系结构由连接池、系统管理和工具组件、SQL接口、分析器、优化器、缓冲组件、插件式存储引擎和物理文件组成。
Front_Yue
2024/11/21
3870
Redis持久化策略分析:理解、配置与优化
redis持久化(rdb和aof)
Redis持久化,就是将内存数据保存到硬盘,Redis 持久化存储分为 AOF 与 RDB 两种模式,默认开启rdb。
Java架构师必看
2021/05/14
4730
Redis 持久化(10)
Redis速度快,很大一部分原因是因为它所有的数据都存储在内存中。如果断电或者宕机,都会导致内存中的数据丢失。为了实现重启后数据不丢失,Redis提供了两种持久化的方案,一种是RDB快照(RedisDataBase),一种是AOF(AppendOnlyFile)。
兜兜毛毛
2020/03/19
5390
5分钟彻底理解Redis持久化
在默认情况下,Redis将内存数据库快照保存到dump.rdb的二进制文件中。可以对Redis进行设置,让它在“N秒内数据集至少有N个改动”, 这一条件被满足时,自动保存一次数据集。比如说:让Redis满足“60秒内至少有1000个键被改动”这一个条件时,自动保存一次数据集。
程序员小强
2019/10/30
4940
5分钟彻底理解Redis持久化
【Redis】Redis持久化(一)
RDB全称Redis Database Backup file(Redis数据备份文件),也被叫做Redis数据快照。简单来说就是把内存中的所有数据都记录到磁盘中。当Redis实例故障重启后,从磁盘读取快照文件,恢复数据。快照文件称为RDB文件,默认是保存在当前运行目录。
陶然同学
2023/03/10
2420
【Redis】Redis持久化(一)
新手村:Redis进阶篇二---持久化
持久化即将数据保存到可永久保存的存储设备中。我们知道 Redis 为了保证效率而把数据都缓存在内存中,但当我们重启系统或关闭系统后,缓存在内存中的数据都会消失,所以为了让有些数据能保留下,Redis 持久化存储就应运而生。Redis 提供了两种方式进行持久化,一种是RDB 持久化,另一种是 AOF(append only file) 持久化,下面我们逐一介绍。
syy
2020/04/15
4610
新手村:Redis进阶篇二---持久化
Redis 持久化
Redis 提供了两种持久化方式,即 RDB(Redis Database)和 AOF(Append-Only File)。
Andromeda
2024/01/13
3700
Redis的RDB与AOF持久化机制
RDB 是 Redis 默认的持久化方案。 RDB快照(Redis DataBase):当满足一定条件的时候,会把当前内存中的数据写入磁盘,生成一个快照文件dump.rdb。 还是先贴配置:
向着百万年薪努力的小赵
2022/12/02
3270
Redis 持久化揭秘:选择 RDB、AOF 还是混合持久化?
Redis 是一个内存数据库,意味着它主要将数据存储在内存中,从而能够提供极高的性能。然而,作为内存数据库,Redis 默认情况下的数据不会永久保存。为了确保数据在重启或故障后能够恢复,Redis 提供了几种 持久化机制。这些机制允许 Redis 将内存中的数据保存到硬盘上,从而实现数据持久化。
用户7954602
2024/12/19
9140
Redis 持久化揭秘:选择 RDB、AOF 还是混合持久化?
redis 持久化方式 -- AOF & RDB
对于 persistence 模式,也就是持久化存储,redis 提供了两种持久化方法:
用户3147702
2022/06/27
2990
redis 持久化方式 -- AOF & RDB
Redis持久化机制
Redis是基于内存的非关系型K-V数据库,既然它是基于内存的,如果Redis服务器挂了,数据就会丢失。为了避免数据丢失了,Redis提供了持久化,即把数据保存到磁盘。
天罡gg
2022/12/02
4450
Redis持久化机制
Redis持久化 - RDB和AOF
持久化(Persistence),即把数据(如内存中的对象)保存到可永久保存的存储设备中(如磁盘)。 持久化Redis所有数据保持在内存中,对数据的更新将异步地保存到磁盘上。
BUG弄潮儿
2020/09/23
4680
Redis持久化 - RDB和AOF
深度好文:保姆级教程彻底搞懂Redis 持久化
Redis 是内存数据库,如果不将内存中的数据库状态保存到磁盘中,那么一旦服务器进程退出,服务器中的数据库状态也会丢失,数据丢失是一种很严重的生产及故障,所以需要对 Redis 数据进行持久化。Redis 提供了如下几种不同级别的持久化方式
一个程序猿的异常
2023/07/24
1.1K0
深度好文:保姆级教程彻底搞懂Redis 持久化
redis持久化存储AOF与RDB
转载自 https://blog.csdn.net/qq_27384769/article/details/79479048
allsmallpig
2021/02/25
4140
详细介绍Redis持久化机制RDB和AOF
今天分享一下Redis的数据持久化方式,我们知道,Reids是一个高性能的缓存中间件,它的高性能是因为它是基于内存的,我们知道直接操纵内存是比较快的,不过一些美好的事物总会有牺牲一些功能,因为是基于内存,所以当机器发生宕机,那么数据就会完全丢失,Redis怎么可能不会去重视这个问题呢,所以它也提供了数据持久化的方式。
小四的技术之旅
2023/09/05
6270
详细介绍Redis持久化机制RDB和AOF
redis系列:RDB持久化与AOF持久化
Redis的数据都是存储在内存中的,所以Redis持久化也就是要把Redis存储在内存中的数据保存到硬盘。
云枭
2018/08/25
7560
相关推荐
深入理解 Redis 持久化机制:RDB 与 AOF 的设计与实践
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档