Redis从入门到精通(四:持久化)

news2024/11/29 13:48:31

持久化简介

什么是持久化
利用永久性存储介质将数据进行保存,在特定的时间将保存的数据进行恢复的工作机制称为持久化
持久化用于防止数据的意外丢失,确保数据安全性
为什么持久化

redis是将数据存储在内存上的,一旦断电,或者因为机器故障使redis服务宕机,那么存储的内容就会消失

持久化过程保存什么
RDB:将当前数据状态进行保存,快照形式,存储数据结果,存储格式简单,关注点在数据
AOF:将数据的操作过程进行保存,日志形式,存储操作过程,存储格式复杂,关注点在数据的操作过程

RDB

1.save指令进行手动RDB过程
2.bgsave指令进行手动RDB过程
3.save配置进行自动RDB过程
4.RDB优缺点

1.save指令进行手动RDB过程

save

save指令相关配置:
设置本地数据库文件名,默认值为 dump.rdb,通常设置为 dump- 端口号 .rdb
dbfilename filename
设置存储.rdb文件的路径,通常设置成存储空间较大的目录中,目录名称 data
dir path
设置存储至本地数据库时是否压缩数据,默认yes,设置为no,节省 CPU 运行时间,但存储文件变大
rdbcompression yes|no
设置读写文件过程是否进行RDB格式校验,默认yes,设置为no,节约读写10%时间消耗,单存在数据损坏的风险
rdbchecksum yes|no
2.bgsave指令进行手动RDB过程
手动启动后台保存操作,但不是立即执行
bgsave
bgsave指令相关配置:
后台存储过程中如果出现错误现象,是否停止保存操作,默认yes
stop-writes-on-bgsave-error yes|no
其他:
dbfilename filename
dir path
rdbcompression yes|no
rdbchecksum yes|no
3.save配置进行自动RDB
设置自动持久化的条件,满足限定时间范围内key的变化数量达到指定数量即进行持久化
save second changes
参数
second:监控时间范围
changes:监控key的变化量
范例
save 900 1
save 300 10
save 60 10000
其他
dbfilename filename
dir path
rdbcompression yes|no
rdbchecksum yes|no
stop-writes-on-bgsave-error yes|no
4.RDB优缺点
RDB优点
RDB是一个紧凑压缩的二进制文件,存储效率较高
RDB内部存储的是redis在某个 时间点 的数据快照,非常适合用于数据备份,全量复制等场景
RDB恢复数据的速度要比AOF快很多
应用:服务器中每X小时执行bgsave备份,并将RDB文件拷贝到远程机器中,用于灾难恢复。
RDB缺点
RDB方式无论是执行指令还是利用配置,无法做到实时持久化,具有较大的可能性丢失数据
bgsave指令每次运行要执行fork操作创建子进程,要牺牲掉一些性能
Redis的众多版本中未进行RDB文件格式的版本统一,有可能出现各版本服务之间数据格式无法兼容现象

AOF

1.AOF概念
2.AOF执行策略
3.AOF重写
4.AOF的工作流程以及重写的工作流程
1.AOF概念
AOF(append only file)持久化:以独立日志的方式记录每次写命令,重启时再重新执行AOF文件中命令 达到恢复数据的目的。与RDB相比可以简单理解为 由记录数据改为记录数据产生的变化
AOF的主要作用是解决了数据持久化的实时性,目前已经是Redis持久化的主流方式
启动AOF相关配置:
开启AOF持久化功能,默认no,即不开启状态
appendonly yes | no
AOF持久化文件名,默认文件名为appendonly.aof,建议配置为appendonly-端口号.aof
appendfilename filename
AOF持久化文件保存路径,与RDB持久化文件保持一致即可
dir
AOF写数据策略,默认为everysec
appendfsync always | everysec | no
2.AOF执行策略
always(每次):每次写入操作均同步到AOF文件中
数据零误差 性能较低 ,不建议使用。
everysec(每秒):每秒将缓冲区中的指令同步到AOF文件中,在系统突然宕机的情况下丢失1秒内的数据
数据 准确性较高 性能较高 ,建议使用,也是默认配置
no(系统控制):由操作系统控制每次同步到AOF文件的周期
整体过程 不可控
3.AOF重写
AOF重写
随着命令不断写入AOF,文件会越来越大,为了解决这个问题,Redis引入了AOF重写机制压缩文件体积。AOF文件重写是将Redis进程内的数据转化为写命令同步到新AOF文件的过程。简单说就是将对同一个数据的若干个条命令执行结 果转化成最终结果数据对应的指令进行记录。
AOF重写作用
降低磁盘占用量,提高磁盘利用率
提高持久化效率,降低持久化写时间,提高IO性能
降低数据恢复用时,提高数据恢复效率 AOF
AOF重写规则
1.进程内具有时效性的数据,并且数据已超时将不再写入文件
2.非写入类的无效指令将被忽略,只保留最终数据的写入命令
 如del key1、 hdel key2、srem key3、set key4 111、set key4 222等
 如select指令虽然不更改数据,但是更改了数据的存储位置,此类命令同样需要记录
3.对同一数据的多条写命令合并为一条命令
如lpush list1 a、lpush list1 b、 lpush list1 c 可以转化为:lpush list1 a b c。
为防止数据量过大造成客户端缓冲区溢出,对list、set、hash、zset等类型,每条指令最多写入64个元素
AOF重写方式:
手动重写
bgrewriteaof
自动重写
auto-aof-rewrite-min-size size
auto-aof-rewrite-percentage percentage
4.AOF的工作流程以及重写的工作流程

RDB与AOF区别

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

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

相关文章

嵌入式学习笔记(23)通信的基础概念

5.1.1通信的发展历史 (1)烽火台、狼烟;信件;电子通信(电报、电话、网络信号) (2)通信中最重要的两个方面:信息表示、解析方法 信息的传输方法 (3&#xf…

04-前端基础CSS第二天

01-CSS第二天导读 目标: 能使用emmet语法能够使用CSS复合选择器能够写出伪类选择器的使用规范能够说出元素有几种显示模式能够写出元素显示模式的相互转换代码能够写出背景图片的设置方式能够计算CSS的权重 目录: Emmet语法CSS的复合选择器CSS的元素…

[.NET 6] IHostedService 的呼叫等等我的爱——等待Web应用准备就绪

📢欢迎点赞 :👍 收藏 ⭐留言 📝 如有错误敬请指正,赐人玫瑰,手留余香!📢本文作者:由webmote 原创📢作者格言:新的征程,我们面对的不是技术而是人心,人心不可测,海水不可量,唯有技术,才是深沉黑夜中的一座闪烁的灯塔 !序言 在这篇文章中,我将介绍如何等…

搜狐验证码

嗯。。。。我又来了。百度这段时间老搞事情,做seo的兄弟们该何去何从。准备转战sh,xl,谷歌了。 先来看看搜狐两种验证类型。 滑块: 点选: 目前好像就只有这两种类型。感兴趣的可以去看看这个。不难。作者踩坑的地方。加密少了个…

【LeetCode-简单题】27. 移除元素

文章目录 题目方法一:快慢指针 题目 方法一:快慢指针 int fast 0;// 快指针 用于扫描需要的元素int slow 0;//慢指针 用于记录需要存放元素的位置class Solution { // 快慢指针public int removeElement(int[] nums, int val) {int fast 0;// 快指针…

Kubernetes Dashboard安装部署

Kubernetes Dashboard安装部署 1. 下载Dashboard 部署文件2. 修改yaml配置文件3. 应用安装,查看pod和svc4. 创建dashboard服务账户5. 创建admin-user用户的登录密钥6. 登录6.1 使用token登录(1) 短期token(2) token长期有效 6.2 使用 Kubeconfig 文件登录 7.安装met…

Linux内核4.14版本——drm框架分析(12)——DRM_IOCTL_MODE_SETCRTC(drm_mode_setcrtc)

目录 1. drm_mode_setcrtc 1.1 根据应用传入的crtc_id找到crtc 1.2 根据应用传入的fb_id,找到对应的drm_framebuffer 1.3 根据应用传入的mode,创建一个drm_display_mode 1.4 根据传入的set_connectors_ptr,找到驱动对应的connector 1.5 将以上信息…

【题解】2596. 检查骑士巡视方案

题解&#xff1a; class Solution {int n,m;bool st[100][100];int flag;int dx[8]{-1,-2,-2,-1,1,2,2,1};int dy[8]{-2,-1,1,2,2,1,-1,-2}; public:bool checkValidGrid(vector<vector<int>>& grid) {m grid.size();n grid[0].size();dfs(grid,0,0,0);ret…

第二章 进程与线程 三、进程控制

目录 一、定义 二、实现方式&#xff08;用原语实现&#xff09; 注意&#xff1a; 1、原语是什么 2、如何实现原语的原子性 3、关中断指令和开中断指令是什么 三、进程控制的相关原语 1、进程的创建 ​编辑 2、进程的终止 3、进程的阻塞与唤醒&#xff08;阻塞和唤醒…

明星翻包视频的流行:背后的动机和原因

现如今&#xff0c;明星翻包视频正风靡社交媒体&#xff0c;引发了广泛的关注和讨论。这种趋势引发了一个问题&#xff1a;为什么现在的明星都喜欢翻包呢&#xff1f;要理解这一现象&#xff0c;我们需要深入探讨背后的动机和原因。在社交媒体的兴起和品牌合作的崭露头角的背景…

.360勒索病毒数据恢复|金蝶、用友、管家婆、OA、速达、ERP等软件数据库恢复

导言&#xff1a; 在当今数字时代&#xff0c;随着我们对计算机和互联网的依赖不断增加&#xff0c;威胁网络安全的因素也日益猖獗。其中&#xff0c; 360 勒索病毒是一股咄咄逼人的黑暗力量&#xff0c;它能够迅速加密您的数据文件&#xff0c;并以比特币等加密货币的形式勒索…

加密资产托管:迈向安全与合规的未来!

在当今数字化时代&#xff0c;加密货币正逐渐走进人们的视野&#xff0c;并成为越来越多投资者和机构的关注焦点。然而&#xff0c;加密领域仍存在一个主要问题&#xff1a;如果丢失了密钥&#xff0c;就会导致无法访问资产。为了解决这一问题&#xff0c;加密货币行业正在向资…

在Visual Studio Code中安装JetBrains Mono字体

让我们面对现实吧&#xff0c;JetBrain的Mono是一种漂亮的单行线字体&#xff0c;对于在IDE中展示代码和处理代码都很有用。它有一个增加的X高度&#xff0c;以获得更好的阅读体验&#xff0c;有更好的形状以看到字母列&#xff0c;还有一个开发者友好的各种连接词&#xff0c;…

【深度学习】对比学习

1.什么是对比学习 对比学习有的paper中称之为自监督学习&#xff0c;有的paper称之为无监督学习&#xff0c;自监督学习是无监督学习的一种形式&#xff0c;现有的文献中没有正式的对两者进行区分定义&#xff0c;这两种称呼都可以用。其主要思想是模型能够更加重新的学习到编码…

IIC总线上拉电阻计算

IIC总线上拉电阻计算 1. 概述2. 上拉电阻计算3. 总线传输速度与功率4. 实例计算 1. 概述 IIC&#xff08;Inter-Integrated Circuit&#xff09;其实是IICBus简称&#xff0c;所以中文应该叫集成电路总线&#xff0c;它是一种串行通信总线&#xff0c;使用多主从架构&#xff…

嵌入式Linux驱动开发(I2C专题)(三)

无需编写驱动直接访问设备_I2C-Tools介绍 参考资料&#xff1a; Linux驱动程序: drivers/i2c/i2c-dev.cI2C-Tools-4.2: https://mirrors.edge.kernel.org/pub/software/utils/i2c-tools/AP3216C&#xff1a; git clone https://e.coding.net/weidongshan/01_all_series_quick…

没出息的项目经理的5大表现

大家好&#xff0c;我是老原。 都说&#xff0c;30岁的项目经理凶猛如狼&#xff0c;40岁的项目经理狡猾如狐。 实际上&#xff0c;又有多少项目经理能做到这般。 有多少项目经理&#xff0c;兢兢业业工作个几年&#xff0c;最后还是守着一亩三分地&#xff0c;既没有升职加…

JSON注解和异常处理的使用

一、JSON数据返回 1.1.前言 JSON是一种轻量级的数据交换格式&#xff0c;易于阅读和编写&#xff0c;同时也易于机器解析和生成。JSON的常用场景包括&#xff1a; 前后端分离的项目中&#xff0c;后端向前端传送数据时 。 Ajax异步访问数据。RPC远程调用。 除了JSON&#x…

爽文式的带你快速理解Nginx

1 引入nginx的概念 Nginx是一个开源的Web服务器和反向代理服务器&#xff0c;它可以用来处理大量的网络请求和响应。Nginx使用事件驱动的非阻塞I/O模型&#xff0c;使其能够处理大量的并发连接。它还可以作为HTTP、HTTPS、SMTP、POP3和IMAP等协议的代理服务器&#xff0c;以及…

PM2 | NodeJS应用进程管理工具—PM2的基本使用

目录 1. pm2 简介 2. pm2的主要特性 3. 常用命令 3.1 pm2的安装与更新 3.1.1 pm2安装 3.1.2 pm2更新 3.2 pm2 启动运行指定的程序 3.2.1 正常启动应用程序 3.2.2 启动应用程序时并设置name 3.3 pm2 停止指定运行的程序 3.3.1 停止特定的应用 3.3.2 停止所有的应用 …