Redis - 缓存持久化

news/2024/12/2 16:06:25/

Redis 的缓存持久化有两种技术 : RDB 和 AOF

RDB

Redis 的数据快照

简单说就是将缓存中的所有数据都记录到磁盘中,当Redis发生故障的时候,只需读取快照文件,就可恢复数据

相应的命令是 save 和 bgsave ,这两个命名都可以手动执行RDB持久化,不过

  • save 由 Redis 主线程来执行RDB,会阻塞所有命令
  • bgsave 开启子线程执行RDB,主线程不受影响

如果每次RDB都需要手动输入save或bgsave命令未免太麻烦

因此Redis内部有RDB触发机制,格式 :save [时间] [key的修改次数]
比如 save 300 1 表示300秒内至少有一个key被修改了,则执行 bgsave

AOF

AOF全称 Append Only File (追加文件)。Redis 处理的每一个写命令都会记录在AOF文件中,相当于一个命令日志文件

AOF 的开启方法

找到 redis.conf 文件,其中有一行语句是 appendonly no,因为Redis默认关闭AOF,改为appendonly yes,就可开启AOF,下面还有一行语句 appendfilename “appendonly.aof” 指定AOF文件名

设置 AOF 的记录频率

AOF的执行频率也叫刷盘策略,同样是通过redis.conf 文件进行配置,总共有三档频率

  • appendfsync always : 同步刷盘,每执行一次写命令,就立刻记录到AOD文件
  • appendfsync everysec : 每秒刷盘,写命令先放入AOF缓冲区,然后每隔一秒将缓冲区数据写到AOF文件,这是Redis默认的AOF刷盘策略
  • appendfsync no:操作系统控制,写命名都先放入AOF缓冲区,由操作系统决定何时将缓冲内容写回磁盘

三种刷盘策略由上到下,性能原来越好,但可靠性越来越差,因此实际开发过程中大部分选择 appendfsync everysec 刷盘策略

另外 AOF文件比RDB文件要大的多,而且AOF会记录对同一个key的多次写操作,但只有最后一次是有效的。我们可以通过 bgrewriteaof 命令,让AOF文件执行重写功能,用最少的命令达到相同的效果

比如:
set num 1
set name zyj
set num 3

执行bgrewriteaof命令后,可重写为 mset name zyj num 3

Redis也会在触发阈值时自动去重写AOF文件。阈值也可以在redis.conf中配置:

  • 找到语句 auto-aof-rewrite-percentage [百分比],该语句表示 AOF文件比上次文件增长超过多少百分比触发重写
  • 语句 auto-aof-rewrite-min-size [AOF文件大小],该语句表示AOF文件达到多大就触发重写

RDB 和 AOF 对比

RDB -
优点 : 文件小; 宕机恢复速度快
缺点 : 数据完整性较低; 占用的CPU和内存资源较大

AOF -
优点 :数据完整性较高; 在记录时占用的CPU和内存资源较小(但重写的时候占有很大)
缺点 :文件体积大,较占用磁盘空间;宕机恢复速度较慢

RDB和AOF各有自己的优缺点,如果对数据安全性要求较高,在实际开发中往往会结合两者来使用。


http://www.ppmy.cn/news/997129.html

相关文章

台式机/工控机通过网线共享笔记本电脑无线网络(待续)

1、 将台式机通过网线和笔记本连接。 2、 将笔记本的“本地连接”和“无线网络连接”的ipv4均设置为自动获取。 4.修改台式机的IP地址为如下(对应笔记本信息) IP地址为192.168.XXX.12 子网掩码为255.255.255.0 默认网关为192.168.XXX.1 首选DNS为192.16…

Centos虚拟机修改密码

1.重启系统 2.在这个选择界面,按e 3.找到如下位置,插入init/bin/sh 4.填写完成后按Ctrlx引导启动 5.输入mount -o remount, rw / (注意空格) 6.重置密码 出现以下为重置成功 7.执行touch /.autorelabel 8.退出exec /sbin/init 9.输入你的新密码…

人工智能安全-3-噪声数据处理

0 提纲 噪声相关概述噪声处理的理论与方法基于数据清洗的噪声过滤主动式过滤噪声鲁棒模型1 噪声相关概述 噪声类型: 属性噪声:样本中某个属性的值存在噪声标签噪声:样本归属类别关于噪声分布的假设:均匀分布、高斯分布、泊松分布等。 标签噪声的产生原因: (1)特定类别…

python小案例

以下是采集店铺链接并去重的代码示例: import requestsfrom bs4 import BeautifulSoupdef get_shop_links(item_url): # 访问宝贝详情页面 response requests.get(item_url) soup BeautifulSoup(response.text, html.parser) # 获取必逛好店的店铺…

从0到1框架搭建,Python+Pytest+Allure+Git+Jenkins接口自动化框架(超细整理)

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 接口测试是对系统…

机械硬盘资料

本资料仅用于讨论,如有侵权请反馈: 机械硬盘的生产是现代制造业的极致 硬盘的工作原理是:盘片上布满磁性材料,信息的存储靠磁性材料极性的排列组织来存储;信息的读写就是靠硬盘的磁头“掠过”盘片,依靠磁场…

【图论】强连通分量

一.定义 强连通分量(Strongly Connected Components,简称SCC)是图论中的一个概念,用于描述有向图中的一组顶点,其中任意两个顶点之间都存在一条有向路径。换句话说,对于图中的任意两个顶点u和v,…

前端(十一)——Vue vs. React:两大前端框架的深度对比与分析

😊博主:小猫娃来啦 😊文章核心:Vue vs. React:两大前端框架的深度对比与分析 文章目录 前言概述原理与设计思想算法生态系统与社区支持API与语法性能与优化开发体验与工程化对比总结结语 前言 在当今快速发展的前端领…