Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Redis的持久化策略RDB和AOF

Redis的持久化策略RDB和AOF

作者头像
用户10125653
发布于 2022-11-10 13:54:53
发布于 2022-11-10 13:54:53
35200
代码可运行
举报
文章被收录于专栏:changechange
运行总次数:0
代码可运行

介绍

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

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

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

RDB策略(默认)

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

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

代码语言:javascript
代码运行次数:0
运行
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
代码运行次数:0
运行
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来当成缓存,这得益于它存储数据的位置在内存中,这样在进行取数时,不用再进行磁盘IO,速度也会大大增加。
半月无霜
2023/03/03
3780
Redis的RDB与AOF持久化机制
RDB 是 Redis 默认的持久化方案。 RDB快照(Redis DataBase):当满足一定条件的时候,会把当前内存中的数据写入磁盘,生成一个快照文件dump.rdb。 还是先贴配置:
向着百万年薪努力的小赵
2022/12/02
2610
Redis 持久化(10)
Redis速度快,很大一部分原因是因为它所有的数据都存储在内存中。如果断电或者宕机,都会导致内存中的数据丢失。为了实现重启后数据不丢失,Redis提供了两种持久化的方案,一种是RDB快照(RedisDataBase),一种是AOF(AppendOnlyFile)。
兜兜毛毛
2020/03/19
4910
Redis持久化 - RDB和AOF
持久化(Persistence),即把数据(如内存中的对象)保存到可永久保存的存储设备中(如磁盘)。 持久化Redis所有数据保持在内存中,对数据的更新将异步地保存到磁盘上。
BUG弄潮儿
2020/09/23
3770
Redis持久化 - RDB和AOF
redis系列:RDB持久化与AOF持久化
Redis的数据都是存储在内存中的,所以Redis持久化也就是要把Redis存储在内存中的数据保存到硬盘。
云枭
2018/08/25
6340
Redis 持久化揭秘:选择 RDB、AOF 还是混合持久化?
Redis 是一个内存数据库,意味着它主要将数据存储在内存中,从而能够提供极高的性能。然而,作为内存数据库,Redis 默认情况下的数据不会永久保存。为了确保数据在重启或故障后能够恢复,Redis 提供了几种 持久化机制。这些机制允许 Redis 将内存中的数据保存到硬盘上,从而实现数据持久化。
用户7954602
2024/12/19
3890
Redis 持久化揭秘:选择 RDB、AOF 还是混合持久化?
Redis 持久化详解
在默认情况下, Redis 将数据库快照保存在名字为dump.rdb的二进制文件中。 你可以对 Redis 进行设置, 让它在“ N 秒内数据集至少有 M 个改动”这一条件被满足时, 自动保存一次数据集。 你也可以通过调用 SAVE或者 BGSAVE , 手动让 Redis 进行数据集保存操作。 这种持久化方式被称为快照 snapshotting.
斯武丶风晴
2020/05/18
2250
Redis 持久化详解
redis 持久化方式 -- AOF & RDB
对于 persistence 模式,也就是持久化存储,redis 提供了两种持久化方法:
用户3147702
2022/06/27
2380
redis 持久化方式 -- AOF & RDB
Redis持久化
AOF的整个流程大体来看可以分为两步,一步是命令的实时写入(如果是 appendfsync everysec 配置,会有1s损耗),第二步是对aof文件的重写。
用户3876103
2024/08/27
900
redis持久化(rdb和aof)
Redis持久化,就是将内存数据保存到硬盘,Redis 持久化存储分为 AOF 与 RDB 两种模式,默认开启rdb。
Java架构师必看
2021/05/14
3930
Redis持久化 aof和rdb的原理
由于Redis的数据都存放在内存中,如果没有配置持久化,redis重启后数据就全丢失了,于是需要开启redis的持久化功能,将数据保存到磁盘上,当redis重启后,可以从磁盘中恢复数据。
ITer.996
2022/11/22
7260
Redis持久化 aof和rdb的原理
Redis 持久化
Redis 提供了两种持久化方式,即 RDB(Redis Database)和 AOF(Append-Only File)。
Andromeda
2024/01/13
2260
5分钟彻底理解Redis持久化
在默认情况下,Redis将内存数据库快照保存到dump.rdb的二进制文件中。可以对Redis进行设置,让它在“N秒内数据集至少有N个改动”, 这一条件被满足时,自动保存一次数据集。比如说:让Redis满足“60秒内至少有1000个键被改动”这一个条件时,自动保存一次数据集。
程序员小强
2019/10/30
4440
5分钟彻底理解Redis持久化
Redis 持久化: RDB 和 AOF
Redis 是基于内存的数据库, 服务一旦宕机, 内存中的数据将全部丢失. 通常来说可以通过数据库来恢复这些数据, 但这会给数据库带来非常大的读压力, 并且这个过程会非常缓慢, 并导致程序响应慢, 因此 Redis 提供了把内存数据持久化到硬盘, 并通过备份文件来恢复数据的功能, 即持久化机制.
joelzychen
2023/03/08
3690
Redis 持久化: RDB 和 AOF
redis持久化存储AOF与RDB
转载自 https://blog.csdn.net/qq_27384769/article/details/79479048
allsmallpig
2021/02/25
3210
redis持久化RDB与AOF的对比
Redis提供了两种主要的持久化机制:RDB(Redis Database)和AOF(Append Only File)。
GeekLiHua
2025/01/21
1080
新手村:Redis进阶篇二---持久化
持久化即将数据保存到可永久保存的存储设备中。我们知道 Redis 为了保证效率而把数据都缓存在内存中,但当我们重启系统或关闭系统后,缓存在内存中的数据都会消失,所以为了让有些数据能保留下,Redis 持久化存储就应运而生。Redis 提供了两种方式进行持久化,一种是RDB 持久化,另一种是 AOF(append only file) 持久化,下面我们逐一介绍。
syy
2020/04/15
4120
新手村:Redis进阶篇二---持久化
Redis 持久化机制
持久化数据,也就是将内存中的数据写入到硬盘里,大部分原因是为了之后重用数据(比如重启机器、机器故障后恢复数据),或是为了防止系统故障而将数据备份到远程。
happyJared
2019/08/25
7510
Redis持久化策略分析:理解、配置与优化
今日推荐 《MySQL体系结构解密:深入探索数据库内部工作原理的奥秘》这篇文章介绍了MySQL体系结构由连接池、系统管理和工具组件、SQL接口、分析器、优化器、缓冲组件、插件式存储引擎和物理文件组成。
Front_Yue
2024/11/21
1760
Redis持久化策略分析:理解、配置与优化
Redis持久化机制
Redis是基于内存的非关系型K-V数据库,既然它是基于内存的,如果Redis服务器挂了,数据就会丢失。为了避免数据丢失了,Redis提供了持久化,即把数据保存到磁盘。
天罡gg
2022/12/02
3690
Redis持久化机制
相关推荐
Redis的持久化策略RDB和AOF
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验