【redis6】第十二章(持久化)

news2024/9/20 18:44:29

RDB

RDB是什么

在指定的时间间隔内将内存中的数据集快照写入磁盘, 也就是行话讲的SNAPSHOT快照,它恢复时是将快照文件直接读到内存里

备份是如何执行的

Redis会单独创建(fork)一个子进程来进行持久化,会将数据入到 一个临时文件中,待持久化过程都结束了,再用这个临时文件替换上次持久化好的文件。 整个过程中,主进程是不进行任何IO操作的,这就确保了极高的性能 如果需要进行大规模数据的恢复,且对于数据恢复的完整性不是非常敏感,那RDB方式要比AOF方式更加的高效。RDB的缺点是最后一次持久化后的数据可能丢失

Fork

在这里插入图片描述

在这里插入图片描述

RDB持久化流程

在这里插入图片描述

dump.rdb文件

在redis.conf中配置文件名称,默认为dump.rdb

# The filename where to dump the DB
dbfilename dump.rdb

配置位置

rdb文件的保存路径,也可以修改。默认为Redis启动时命令行所在的目录下

# The working directory.
#
# The DB will be written inside this directory, with the filename specified
# above using the 'dbfilename' configuration directive.
#
# The Append Only File will also be created inside this directory.
#
# Note that you must specify a directory here, not a file name.
dir ./

stop-writes-on-bgsave-error

当Redis无法写入磁盘的话,直接关掉Redis的写操作。推荐yes.

# However if you have setup your proper monitoring of the Redis server
# and persistence, you may want to disable this feature so that Redis will
# continue to work as usual even if there are problems with disk,
# permissions, and so forth.
stop-writes-on-bgsave-error yes

Save

格式:save 秒钟 写操作次数
RDB是整个内存的压缩过的Snapshot,RDB的数据结构,可以配置复合的快照触发条件,
默认是1分钟内改了1万次,或5分钟内改了10次,或15分钟内改了1次。
禁用
不设置save指令,或者给save传入空字符串

配置文件中默认的快照配置

# Save the DB to disk.
#
# save <seconds> <changes>
#
# Redis will save the DB if both the given number of seconds and the given
# number of write operations against the DB occurred.
#
# Snapshotting can be completely disabled with a single empty string argument
# as in following example:
#
# save ""
#
# Unless specified otherwise, by default Redis will save the DB:
#   * After 3600 seconds (an hour) if at least 1 key changed
#   * After 300 seconds (5 minutes) if at least 100 keys changed
#   * After 60 seconds if at least 10000 keys changed
#
# You can set these explicitly by uncommenting the three following lines.
#
# save 3600 1
# save 300 100
# save 60 10000

save :save时只管保存,其它不管,全部阻塞。手动保存。不建议。
bgsave:Redis会在后台异步进行快照操作, 快照同时还可以响应客户端请求。
可以通过lastsave 命令获取最后一次成功执行快照的时间

flushall命令

执行flushall命令,也会产生dump.rdb文件,但里面是空的,无意义

rdbcompression 压缩文件

# Compress string objects using LZF when dump .rdb databases?
# By default compression is enabled as it's almost always a win.
# If you want to save some CPU in the saving child set it to 'no' but
# the dataset will likely be bigger if you have compressible values or keys.
rdbcompression yes

对于存储到磁盘中的快照,可以设置是否进行压缩存储。如果是的话,redis会采用LZF算法进行压缩。

如果你不想消耗CPU来进行压缩的话,可以设置为关闭此功能。推荐yes.

rdbchecksum 检查完整性

# RDB files created with checksum disabled have a checksum of zero that will
# tell the loading code to skip the check.
rdbchecksum yes

在存储快照后,还可以让redis使用CRC64算法来进行数据校验,
但是这样做会增加大约10%的性能消耗,如果希望获取到最大的性能提升,可以关闭此功能
推荐yes.

RDB的备份

先通过config get dir 查询rdb文件的目录
将*.rdb的文件拷贝到别的地方
rdb的恢复

  • 关闭Redis
  • 先把备份的文件拷贝到工作目录下 cp dump2.rdb dump.rdb
  • 启动Redis, 备份数据会直接加载

优势

  • 适合大规模的数据恢复
  • 对数据完整性和一致性要求不高更适合使用
  • 节省磁盘空间
  • 恢复速度快

-

劣势

  • Fork的时候,内存中的数据被克隆了一份,大致2倍的膨胀性需要考虑
  • 虽然Redis在fork时使用了写时拷贝技术,但是如果数据庞大时还是比较消耗性能。
  • 在备份周期在一定间隔时间做一次备份,所以如果Redis意外down掉的话,就会丢失最后一次快照后的所有修改。

如何停止

动态停止RDB:redis-cli config set save “” #save后给空值,表示禁用保存策略

小总结

在这里插入图片描述

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

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

相关文章

ARM学习(17)ARM函数调用规则

笔者来聊聊ARM的函数的调用规则 你好&#xff01; 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章&#xff0c;了解一下Markdown的基本语法知识。 新的改变 我们对Markdown编辑器进行了一些功能拓展与语法支持&…

观点动力学模型:主要理论与模型综述

文章目录意见动态建模图论DeGroot 模型Friedkin-Johnsen models社会权力演变自我评价反映的演变DeGroot-Friedkin模型(DeGroot)的新研究最终社会权力的分析动态相对互动拓扑相似时间尺度&#xff0c;记忆和噪声表达观点(expressed opinion)和私人观点(private opinion)EPO模型意…

学完python再学Java顺利吗,学完python再学Java要多久

这篇文章主要介绍了学完python再学C会不会轻松一点&#xff0c;具有一定借鉴价值&#xff0c;需要的朋友可以参考下。希望大家阅读完这篇文章后大有收获&#xff0c;下面让小编带着大家一起了解一下。 1、学编程先学python&#xff0c;然后学java可以吗&#xff1f; 建议先学J…

solidity Dapp 从签名中提取消息签名地址

通常, ECDSA&#xff08;椭圆曲线数字签名算法&#xff09;包含两个参数, r 和 s. 在以太坊中签名包含第三个参数 v,它可以用于验证哪一个账号的私钥签署了这个消息。 Solidity 提供了一个内建函数 ecrecover 它接受 r, s and v 作为参数并且返回签名这的地址。我们如何进行测试…

Windows使用WinSW实现开机自启动服务

在windwos系统中&#xff0c;有时候需要java的jar开机自启动&#xff0c;或者nginx的开机自启动&#xff0c;或者内网穿透工具(frp)的开机自启动&#xff0c;使用WinSW是一种很好的选择&#xff0c;记录一下使用WinSW实现的方式WinSW开源和下载地址&#xff08;最新版WinSW v2.…

从0开始学python -14

Python3 字符串 -1 字符串是 Python 中最常用的数据类型。我们可以使用引号( ’ 或 " )来创建字符串。 创建字符串很简单&#xff0c;只要为变量分配一个值即可。例如&#xff1a; var1 Hello World! var2 "Runoob"Python 访问字符串中的值 Python 不支持…

Springboot2.x+Websocket+js实现实时在线文本协同编辑,并展示协同用户

文章目录诉求相关技术思路展开相关步骤pom配置服务端相关配置文本信息、用户广播处理逻辑前端功能代码功能测试小结诉求 实现页面实时在线文本协同编辑,且显示当前同时编辑文本的用户。 相关技术 Springboot(2.7.0)Websocketjavascript 思路展开 页面展示当前登陆用户页面有…

NANK南卡护眼台灯Pro新品测评:旗舰级护眼,降低80%近视风险!

对于重度熬夜患者来说&#xff0c;对于家居用品是非常偏爱的&#xff0c;而最主要的就是光源问题&#xff0c;护眼台灯的发展迅速&#xff0c;不再局限于简单照明&#xff0c;在写作和办公、绘画的场景都适用&#xff0c;经常在电脑桌上的我&#xff0c;就看到了这款旗舰级专业…

9个 Intellij IDEA中使用Debug调试详解

有人说&#xff1a;一个人从1岁活到80岁很平凡&#xff0c;但如果从80岁倒着活&#xff0c;那么一半以上的人都可能不凡。 生活没有捷径&#xff0c;我们踩过的坑都成为了生活的经验&#xff0c;这些经验越早知道&#xff0c;你要走的弯路就会越少。 Debug用来追踪代码的运行流…

java数据输入

数据输入1.1数据输入概述1.2 Scanner使用的基本步骤导包创建对象接收数据

Windows内核--任务、进程和线程(2.4)

图片来自: Windows内核原理与实现 Windows内核有"任务"概念吗? 从技术术语来说&#xff0c;Windows内核并没有"任务"。"任务"一般被认为是抽象的需要执行的事情。在不同操作系统上&#xff0c;"任务"所代表的官方名称有所差异。 Linu…

树形表查询

树形表: 情况一:固定层级的树形表: 可以使用表的自连接查询,比如查询两级分类课程 selectone.id one_id,one.name one_name,one.parentid one_parentid,one.orderby one_orderby,one.label one_label,two.id two_id,two.name two_name,two.parentid two_parentid,two.orderby …

系统公告 | MemFire Cloud应用管理全新升级,实时数据库等你来体验~

“超能力”数据库&#xff5e;拿来即用&#xff0c;应用开发人员再也不用为撰写API而发愁。MemFire Cloud 为开发者提供了简单易用的云数据库&#xff08;表编辑器、自动生成API、SQL编辑器、备份恢复、托管运维&#xff09;&#xff0c;很大地降低开发者的使用门槛。 MemFire …

计算机视觉OpenCv学习系列:第九部分、视频读写

第九部分、视频读写第一节、视频读写处理1.视频标准与格式2.视频读写与函数3.代码练习与测试学习参考第一节、视频读写处理 1.视频标准与格式 视频标准与格式&#xff1a; SD(Standard Definition)标清480PHD(High Definition)高清720P/1080PUHD(Ultra High Definition)超高清…

100 个手把手、掏心窝子IDEA快捷键从入门到精通教程

有人说&#xff1a;一个人从1岁活到80岁很平凡&#xff0c;但如果从80岁倒着活&#xff0c;那么一半以上的人都可能不凡。 生活没有捷径&#xff0c;我们踩过的坑都成为了生活的经验&#xff0c;这些经验越早知道&#xff0c;你要走的弯路就会越少。 一、构建/编译 Ctrl F9&…

c++函数返回数组类型

c函数返回数组类型 首先&#xff0c;C 不允许返回一个完整的数组作为函数的参数。但是&#xff0c;可以通过指定不带索引的数组名来返回一个指向数组的指针。C 不支持在函数外返回局部变量的地址&#xff0c;除非定义局部变量为 static 变量。 方法一&#xff1a;将返回值定义…

完整的Apache+PHP8+MYSQL的配置

1.下载Apache和PHP下载Apache&#xff0c;地址&#xff1a;http://www.apachelounge.com/download/&#xff0c;如下图&#xff1a;将下载的压缩包解压到某个文件夹(比如&#xff1a;D:\software), 将解压后的文件夹重命名为Apache24下载PHP压缩包&#xff0c;地址&#xff1a;…

天云数据入选中国信通院《全球数据库产业图谱(2022)》

6月28日&#xff0c;由中国信息通信研究院&#xff08;以下简称“中国信通院”&#xff09;、中国通信标准化协会指导&#xff0c;中国通信标准化协会大数据技术标准推进委员会&#xff08;CCSA TC601&#xff09;主办的2022大数据产业峰会在京召开。 大会现场&#xff0c;魏凯…

黑马Pink老师JavaScript新教程上线啦~

今天是你开工的第几天&#xff1f; 是谁在回味假期的美好 是谁一上班就困困困 是谁身在上班心还在春节假 友情提示 再坚持4天&#xff0c;就到周末了 世间长假难有 但周末常在 无论是对于学习人还是打工人来说 周末都太美好了 和周末一样美好的 还有黑马的免费教程 …

11-Alibaba微服务流控组件Sentinel实战上

分布式系统遇到的问题 在一个高度服务化的系统中,我们实现的一个业务逻辑通常会依赖多个服务,比如:商品详情展示服务会依赖商品服务, 价格服务, 商品评论服务. 如图所示: 调用三个依赖服务会共享商品详情服务的线程池. 如果其中的商品评论服务不可用, 就会出现线程池里所有线程…