Redis入门到入土(day03)

news2025/1/17 15:46:03

Redis的持久化

Redis 是内存数据库,如果不将内存中的数据库状态保存到磁盘,那么一旦服务器进程退出,服务器中的数据库状态也会消失。所以 Redis 提供了持久化功能!

RDB(Redis DataBase)

什么是RDB

在指定的时间间隔内将内存中的数据集快照写入磁盘,也就是行话讲的Snapshot快照,它恢复时是将快照文件直接读到内存里。
Redis会单独创建(fork)一个子进程来进行持久化,会先将数据写入到一个临时文件中,待持久化过程都结束了,再用这个临时文件替换上次持久化好的文件。整个过程中,主进程是不进行任何IO操作的。这就确保了极高的性能。如果需要进行大规模数据的恢复,且对于数据恢复的完整性不是非常敏感,那RDB方式要比AOF方式更加的高效。RDB的缺点是最后一次持久化后的数据可能丢失。
Fork
Fork的作用是复制一个与当前进程一样的进程。新进程的所有数据(变量,环境变量,程序计数器等)数值都和原进程一致,但是是一个全新的进程,并作为原进程的子进程。
Rdb 保存的是 dump.rdb 文件
在这里插入图片描述
配置位置及SNAPSHOTTING解析
在这里插入图片描述
这里的触发条件机制,我们可以修改测试一下:

save 120 10 # 120秒内修改10次则触发RDB

1分钟内改了1万次
5分钟内改了10次
15分钟内改了1次
如果想禁用RDB持久化的策略,只要不设置任何save指令,或者给save传入一个空字符串参数也可以。
若要修改完毕需要立马生效,可以手动使用 save 命令!立马生效 !

其余命令解析

Stop-writes-on-bgsave-error:如果配置为no,表示你不在乎数据不一致或者有其他的手段发现和控制,默认为yes。
rbdcompression:对于存储到磁盘中的快照,可以设置是否进行压缩存储。如果是的话,redis会采用LZF算法进行压缩,如果你不想消耗CPU来进行压缩的话,可以设置为关闭此功能。
rdbchecksum:在存储快照后,还可以让redis使用CRC64算法来进行数据校验,但是这样做会增加大约10%的性能消耗,如果希望获取到最大的性能提升,可以关闭此功能。默认为yes。

如何触发RDB快照
  1. 配置文件中默认的快照配置,建议多用一台机子作为备份,复制一份 dump.rdb
  2. 命令save或者是bgsave
    save 时只管保存,其他不管,全部阻塞
    bgsave,Redis 会在后台异步进行快照操作,快照同时还可以响应客户端请求。可以通过lastsave
    命令获取最后一次成功执行快照的时间。
  3. 执行flushall命令,也会产生 dump.rdb 文件,但里面是空的,无意义 !
  4. 退出的时候也会产生 dump.rdb 文件!
    在这里插入图片描述
如何恢复
  1. 将备份文件(dump.rdb)移动到redis安装目录并启动服务即可
  2. CONFIG GET dir 获取目录 这是找到需要去恢复文件的地方而不是查找rdb文件在哪儿
127.0.0.1:6379> config get dir
dir
/usr/local/bin

优点和缺点
优点:
1、适合大规模的数据恢复
2、对数据完整性和一致性要求不高
缺点:
1、在一定间隔时间做一次备份,所以如果redis意外down掉的话,就会丢失最后一次快照后的所有修改
2、Fork的时候,内存中的数据被克隆了一份,大致2倍的膨胀性需要考虑。

小结

在这里插入图片描述

疑难解答
问:flushall和flushdb命令执行之后,确实可以触发快照机制生成一个dump.rdb文件,但是请注意这个dump.rdb文件是空的,因为快照是在flushall和flushdb命令执行之后生成的;
答:正确,flushall和flushdb命令会清空Redis中的所有数据,然后触发快照机制生成一个新的dump.rdb文件。但是,由于数据已经被清空,因此dump.rdb文件中不会包含任何数据。如果在执行flushall和flushdb命令之前,Redis中已经存在数据,并且已经进行了持久化操作,那么之前的快照文件将包含这些数据。
问:flushdb 只是当前数据库清空了,其他数据库的数据保存到rdb内了吧?
答:是的,执行 FLUSHDB 命令只会清空当前选择的数据库中的所有数据,而其他数据库中的数据不会受到影响。同时,如果已经开启了持久化功能,执行 FLUSHDB 命令并不会影响 Redis 的持久化文件。因此,其他数据库中的数据依然会被保存到 RDB 文件中。

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

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

相关文章

HugNLP发布,集成多种NLP任务,可训ChatGPT类模型

HugNLP发布,集成多种NLP任务,可训ChatGPT类模型 作者:王嘉宁 HugNLP——全面统一的NLP框架开源了! 近日,华师大HugAILab团队研发了HugNLP框架,这是一个面向研究者和开发者的全面统一的NLP训练框架&#x…

java版企业电子招投标采购系统源代码之系统的首页设计

​​ 功能模块: 待办消息,招标公告,中标公告,信息发布 描述: 全过程数字化采购管理,打造从供应商管理到采购招投标、采购合同、采购执行的全过程数字化管理。通供应商门户具备内外协同的能力,为…

来来来,一起了解下MTK(联发科)

​ https://www.mediatek.com/ ​ 进入MTK官网,可以看到其产品分为七大方向:智能手机、笔记本电脑与平板电脑、家庭娱乐、车用市场、连接与网络技术、定制芯片服务、物联网。这里主要介绍智能手机、连接与网络技术、物联网三大版块。 一、智能手机 智…

使用护眼灯台灯哪个牌子好用来保护眼睛?真正做到护眼台灯品牌

现在的家长很多人觉得家里已经有灯光了,没必要在买台灯。但事实上台灯有很多优点,尤其对于小孩子来说:1.提供更好的光线:台灯能够提供更加明亮的光线,有助于保护眼睛健康。2.提高工作效率:台灯光线舒适可提高工作效率或学习效率。…

STM32G0开发板下载代码问题

任务: 通过CueMX生成代码,然后烧写到STM32G0开发板上。 遇到的问题: 1. CubeMX生成的代码能用Keil编译,但是下载不到flash中 2. CubeMX再次生成代码后,SWD无法识别芯片。 逐个击破: 1. CubeMX生成的代码…

Axure教程:动态分组柱状图(中继器)

本文将教大家如何用AXURE中的中继器做组分组柱状图。 如图: 预览地址:https://vvpq8c.axshare.com 原型下载地址:https://download.csdn.net/download/weixin_43516258/87761575?spm1001.2014.3001.5503 一、功能介绍 1、在中继器或表格中填…

php导出excel多个sheet

我引用的拓展是: "phpoffice/phpspreadsheet": "^1.4", 我的$accept数据是这样的 "data": { "examStu": [ { "ctime": "2023-04-27 16:28:16", "className": "大猛1", "n…

JavaScript—数据类型转换

目录 1、起 源 理 念 2、特 点 框 架 书 写 位 置 注 释 浏览器调试js代码 3、变量 ① 全局变量 ② 局部变量 ③ 常量 4、数据类型 严格检查数据类型-use strict ① 数 组 ② 字符串 6、类型转换 ① 字符串转数字 ② 字符串转bool值 ③ 能力判断 7、编码方…

自动控制原理笔记-频率响应法-稳定裕度

目录 一、增益裕度h(幅值裕度, gain margin) 二、相角裕度g (phase margin) 三、根据Bode图确定稳定裕度 相角裕度 一、增益裕度h(幅值裕度, gain margin) 开环幅相特性曲线(奈氏曲线)G(jw)与负实轴…

教你一招在VMware的NAT模式下,两台电脑如何互相访问对方的虚拟机

目录 一. 准备工作二. 开始2.1 设置NAT模式2.2 进行NAT模式设置2.3 XShell访问对方虚拟机 一. 准备工作 需要两台电脑(我准备了两台win10) VMware虚拟机:【官网下载】两台win10电脑上都安装好centos 7系统(我这里是centos 7版本…

3.Java线程

Java线程 3.1 创建和运行线程 方法一,直接使用Thread import lombok.extern.slf4j.Slf4j;/*** 使用匿名内部类创建线程* author xc* date 2023/4/30 16:19*/ Slf4j public class Test1 {public static void main(String[] args) {Thread thread new Thread(){Ov…

OpenCV-Python图像几何变换

概念:几何变换是指将一幅图像映射到另外一幅图像内的操作。OpenCV提供了多个与映射有关的函数,这些函数使用起来方便灵活,能够高效地完成图像的映射。 缩放 cv2.resize()函数用于缩放图像 det cv2.resize(src, dsize[,dst[,fx[,fy[,interp…

入门级BP神经网络实现回归预测的原理与python代码

文章目录 一、BP神经网络是什么?二、BP神经网络的原理?三、BP神经网络预测过程如下1.初始化参数:2.前向传播:3.反向传播:4.更新参数:5.重复上述过程,直到满足收敛条件或达到最大迭代轮次。 四、…

【Liunx】进程地址空间

文章目录 📖 前言1. 环境变量收尾1.1 认识bash进程:1.2 环境变量具有全局属性:1.3 内建命令: 2. 进程地址空间2.1 Liunx — 地址空间验证:2.2 感知地址空间的存在:2.3 认识地址空间:2.3 - 1&…

C++右值引用(左值表达式、右值表达式)(移动语义、完美转发(右值引用+std::forward))(有问题悬而未决)

文章目录 什么是右值?是什么是右值引用?什么是移动语义?什么是完美转发?(右值引用std::forward) 什么是右值? 在 C 中,表达式可以分为左值表达式和右值表达式。左值表达式指的是可以…

《常规脉搏传输时间作为人体血压变化标志》阅读笔记

目录 一、论文摘要 二、论文十问 Q1: 论文试图解决什么问题? Q2: 这是否是一个新的问题? Q3: 这篇文章要验证一个什么科学假设? Q4: 有哪些相关研究?如何归类?谁是这一课题在领域内值得关注的研究员? …

OpenCV教程——加载、修改、保存图像

1.颜色空间 颜色空间:也称彩色模型(又称彩色空间或彩色系统)。本质上,彩色模型是坐标系统和子空间的阐述。位于系统的每种颜色都有单个点表示。RGB(红绿蓝)是依据人眼识别的颜色定义出的空间,可…

「二线豪华」或成历史,理想反超沃尔沃再树「里程碑」

今年的上海车展,除了占据C位的新能源汽车,还有传统车企。 上海车展开幕前,沃尔沃汽车大中华区销售公司总裁钦培吉在新车发布会上直言:“新势力会的,我们三年就学会了;我们会的,新势力十年都学不…

SQL事务与存储引擎

索引回顾: 索引是一个排序的列表,包含字段的值和值所在行数据的物理地址 事务是一个机制,一个操作序列(一组操作命令),事务会把所有命令当做一个整体向系统提交或撤销操作,要么都执行&#xf…

MySQL中的Join 的算法(NLJ、BNL、BKA)

本文已收录至Github,推荐阅读 👉 Java随想录 文章目录 摘要什么是JoinIndex Nested-Loop JoinBlock Nested-Loop JoinMRR & BKA总结 摘要 Join是MySQL中最常见的查询操作之一,用于从多个表中获取数据并将它们组合在一起。Join算法通常使…