redis持久化方案介绍

news2024/11/26 14:48:46

Redis有两种持久化方案:1. RDB持久化   2. AOF持久化

1 RDB持久化

RDB全称Redis Database Backup file(Redis数据备份文件),也被叫做Redis数据快照。简单来说就是把内存中的所有数据都记录到磁盘中。当Redis实例故障重启后,从磁盘读取快照文件,恢复数据。快照文件称为RDB文件,默认是保存在当前运行目录。默认是开启rdb持久化。

1.1 触发rdb的方式

RDB持久化在以下情况会执行:执行save命令   执行bgsave命令   Redis停机时   触发RDB条件时

1)save命令

save命令会导致主进程执行RDB,这个过程中其它所有命令都会被阻塞。只有在数据迁移时可能用到。

2)bgsave命令

 这个命令执行后会开启独立进程完成RDB,主进程可以持续处理用户请求,不受影响。

3)停机时(非宕机)

Redis停机时会执行一次save命令,实现RDB持久化。

4)触发RDB条件

Redis内部触发RDB的机制,可以在redis.conf文件中找到,格式如下:

# 900秒内,如果至少有1个key被修改,则执行bgsave , 如果是save "" 则表示禁用RDB
save 900 1  
save 300 10  
save 60 10000 

RDB的其它配置也可以在redis.conf文件中设置:

# 是否压缩 ,建议不开启,压缩也会消耗cpu,磁盘的话不值钱
rdbcompression yes

# RDB文件名称
dbfilename dump.rdb  

# 文件保存的路径目录
dir ./ 

1.2 RDB原理

bgsave开始时会fork主进程得到子进程,子进程共享主进程的内存数据。完成fork后读取内存数据并写入 RDB 文件。

fork采用的是copy-on-write技术:

  • 当主进程执行读操作时,访问共享内存;

  • 当主进程执行写操作时,则会拷贝一份数据,执行写操作。

 1.3 RDB优缺点

优点:
1、整个Redis数据库将只包含一个文件dump.rdb,方便持久化。
2、容灾性好,方便备份。
3、性能最大化,fork子进程来完成写操作,让主进程继续处理命令,所以是IO最大化。使用单独子进程来进行持久化,主进程不会进行任何IO操作,保证了redis 的高性能
4.相对于数据集大时,比AOF的启动效率更高。
缺点:
1、数据安全性低。RDB是间隔一段时间进行持久化,如果持久化之间redis 发生故障,会发生数据丢失。所以这种方式更适合数据要求不严谨的时候)
2、由于RDB是通过fork子进程来协助完成数据持久化工作的,因此,如果当数据集较大时,可能会导致整个服务器停止服务几百亳秒,甚至是1秒钟。

2 AOF持久化

AOF全称为Append Only File(追加文件)。Redis处理的每一个写命令都会记录在AOF文件,可以看做是命令日志文件。

2.1 AOF配置

AOF默认是关闭的,需要修改redis.conf配置文件来开启AOF:

# 是否开启AOF功能,默认是no
appendonly yes
# AOF文件的名称
appendfilename "appendonly.aof"

AOF的命令记录的频率也可以通过redis.conf文件来配:

# 表示每执行一次写命令,立即记录到AOF文件
appendfsync always 
# 写命令执行完先放入AOF缓冲区,然后表示每隔1秒将缓冲区数据写到AOF文件,是默认方案
appendfsync everysec 
# 写命令执行完先放入AOF缓冲区,由操作系统决定何时将缓冲区内容写回磁盘
appendfsync no

 2.2 AOF配置常见问题-存在无效的命令

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

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

# AOF文件比上次文件 增长超过多少百分比则触发重写
auto-aof-rewrite-percentage 100
# AOF文件体积最小多大以上才触发重写 
auto-aof-rewrite-min-size 64mb 

 2.3 AOF持久方案的优缺点

优点:
1、通过append模式写文件,即使中途服务器宕机也不会破坏已经存在的内容,可以通过redis-check-aof工具解决数据一致性问题。
2、AOF机制的rewrite模式。定期对AOF文件进行重写,以达到压缩的目的
缺点:
1、AOF文件比RDB文件大,且恢复速度慢。
2、数据集大的时候,比rdb启动效率低。
3、运行效率没有RDB高

总结:如果两个都配了优先加载AOF

做个表格直观的查看他们之间的对比:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/92479.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

[附源码]Python计算机毕业设计高校实习管理平台系统Django(程序+LW)

该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程 项目运行 环境配置: Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术: django python Vue 等等组成,B/S模式 pychram管理等…

【自然语言处理】基于TextRank算法的文本摘要

基于TextRank算法的文本摘要文本摘要是自然语言处理(NLP)的应用之一,一定会对我们的生活产生巨大影响。随着数字媒体的发展和出版业的不断增长,谁还会有时间完整地浏览整篇文章、文档、书籍来决定它们是否有用呢? 利用…

数据结构C语言版 —— 链表增删改查实现(单链表+循环双向链表)

文章目录链表1. 链表的基本概念2. 无头非循环单链表实现1) 动态申请节点2) 打印链表元素3) 插入节点头插法尾插法在指定位置之前插入在指定位置之后插入4) 删除节点删除头部节点删除末尾节点删除指定位置之前的节点删除指定位置之后的节点删除指定位置的节点5) 查找元素6) 销毁…

【图像评价】无参考图像质量评价NIQE【含Matlab源码 681期】

⛄一、无参考图像质量评价NIQE简介 理论知识参考:通用型无参考图像质量评价算法综述 ⛄二、部分源代码 function [mu_prisparam cov_prisparam] estimatemodelparam(folderpath,… blocksizerow,blocksizecol,blockrowoverlap,blockcoloverlap,sh_th) % Input …

013 单词速记

converse adj.相反的,颠倒的 v.交谈 con(加强语气)vers(转反转)e->反转 n.conversation 谈话,对话 adv.conversely 相反的 controversy n.争端 contro(counter) 相反 vers 转 lead to ~ 导致争端 contraversial 有争议…

MySQL-内置函数

文章目录内置函数日期函数字符串函数数学函数其他函数内置函数 日期函数 current_date();current_time();current_timestamp(); 应用: 创建生日表 插入数据: 创建评论区 采用datetime 时间戳自动填充时间 查询两分钟之内发的帖子 评论时间2min…

C语言期末集训1(大一,超基础,小猫猫大课堂配套练习)——顺序结构和分支结构的题

更新不易,麻烦多多点赞,欢迎你的提问,感谢你的转发, 最后的最后,关注我,关注我,关注我,你会看到更多有趣的博客哦!!! 喵喵喵,你对我…

安科瑞配电室环境监控系统解决方案-Susie 周

1、概述 配电室综合监控系统包括智能监控系统屏、通讯管理机、UPS电源、视频监控子系统(云台球机、枪机)、环境监测子系统(温度、湿度、水浸、烟感)、控制子系统(灯光、空调、除湿机、风机、水泵)、门禁监…

Redis分布式锁 - 基础实现及优化

应用场景 互联网秒杀抢优惠卷接口幂等性校验 代码示例 案例1 - StringRedisTemplate基础实现 package com.wangcp.redisson;import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.redis.core.StringRedisTemplate; import org…

以流量为王的时代,如何获得不错的流量,泰山众筹如何脱颖而出?

由于互联网、疫情等因素的影响,实体业务变得越来越困难。许多实体店已经开始转向在线电子商务,但运营一个好的电子商务平台并不容易。没有稳定的流量和忠实的用户,很难达到理想的效果。那到底如何才能获得不错的“流量”呢?泰山众…

第十四届蓝桥杯集训——JavaC组第十三篇——for循环

第十四届蓝桥杯集训——JavaC组第十三篇——for循环 目录 第十四届蓝桥杯集训——JavaC组第十三篇——for循环 for循环(重点) 倒序迭代器 for循环死循环 for循环示例 暴力循环 等差数列求和公式 基础循环展开 循环控制语句 break结束 continue继续 for循环(重点) f…

【图像融合】多尺度奇异值分解图像融合【含Matlab源码 2040期】

⛄一、多尺度奇异值分解的偏振图像融合去雾算法简介 立足于提高传统算法的适应性,提高去雾图像的质量,本文设计了如图 2 所示的去雾算法流程。首先,使用基于最小二乘方法计算出更加精确的偏振信息,改善了以往偏振信息计算不准确的…

基于Qt(C++)实现(PC)学生信息管理系统【100010043】

学生信息管理系统 一、系统指南 本系统为表格式的学生信息管理系统,提供了文件新建、打开及保存功能,还可在表格中对数据进行增加、删除、修改、搜索,下面将一一介绍这些功能 1、新建文件 新建文件将会产生一个全新的空表格,…

基于java+springmvc+mybatis+vue+mysql的少儿编程管理系统

项目介绍 在国家重视教育影响下,教育部门的密确配合下,对教育进行改革、多样性、质量等等的要求,使教育系统的管理和运营比过去十年前更加理性化。依照这一现实为基础,设计一个快捷而又方便的网上少儿编程教育网站系统是一项十分…

原来这就是BFC,遇到样式问题别瞎搞了

看到一篇前端面试题,第一个问题是 什么是BFC ?,一下子唤起了我的辛酸回忆,那是在七月,在沪漂找工作的路上,预约的一个电话面试,眼看着时间就要到了,人生第一次进星巴克,提…

leetcode 337. 打家劫舍 III-[python3图解]-递归+记忆化搜索

题目 小偷又发现了一个新的可行窃的地区。这个地区只有一个入口,我们称之为root。除了root之外,每栋房子有且只有一个“父“房子与之相连。一番侦察之后,聪明的小偷意识到“这个地方的所有房屋的排列类似于一棵二叉树”。 如果 两个直接相连…

【Python百日进阶-数据分析】Day130 - plotly柱状图(条形图):go.bar()实例1

文章目录4.2 plotly.graph_objects条形图4.2.1 go的基本条形图4.2.2 分组条形图4.2.3 堆叠条形图4.2.4 带悬停文本的条形图4.2.5 带直接文本标签的条形图4.2.6 使用uniformtext控制文本大小4.2.7 旋转条形图标签4.2.8 自定义单个条颜色4.2.9 自定义单个条的宽度4.2.10 自定义单…

NetInside网络分析为企业IT工作保驾护航(二)

前言 某企业的DMS经销商在线系统,最近一段时间运维人员经常接到反馈,DMS使用出现大量访问慢的情况,针对此情况进行监测分析。 该企业已部署NetInside流量分析系统,使用流量分析系统提供实时和历史原始流量,重点针对DMS系统性能进…

MobileNetV3基于NNI剪枝操作

NNI剪枝入门可参考:nni模型剪枝_benben044的博客-CSDN博客_nni 模型剪枝 1、背景 本文的剪枝操作针对CenterNet算法的BackBone,即MobileNetV3算法。 该Backbone最后的输出格式如下: 假如out model(x),则x[-1][hm]可获得heatma…

Spring框架04(Spring框架中AOP)

一、spring中bean的生命周期 1.singleton 容器启动的时候创建对象,容器正常关闭时销毁对象 2.prototype 获取对象的时候创建对象,spring容器不负责对象的销毁 生命周期的过程: 1.调用无参创建对象 2.调用set方法初始化属性 3.调用初始化…