RDB初步了解
RDB概念
- 快照文件是.rdb结尾
- redis6.2以前和之后(包括6.2)在什么条件下会保存rdb文件有所不同
- 以前
- 15min&&1个key(改变)调用保存
- 5min&&10key(改变)调用保存
- 1min&&10000key(改变)调用保存
- 之后(改变)
- 60min&&1key(改变)调用保存
- 5min&&100key(改变)调用保存
- 没有变化
- 以前
RDB要修改配置文件的地方
- 文件名
- 可以修改下文件的保存时间(save time changes)
- 保存文件的地方:dir ....
RDB完成使命的道路(自动挡)
- 只要达到条件就会生成一个rdb
- flushall/flushdb也会自动生成一个rdb但是是空的
- shutdown也会自动生成一个rdb(不为空,同时即使没有满足到原先保存的条件也会保存)
- redis在重启的时候会默认在我们原先指定好的dir(存放rdb文件的位置)来读取rdb,恢复数据
在生成rdb文件中一定要存在另一台服务器上,防止生产机物理损坏后备份文件也挂了,同时生成的rdb只会是一个,倘若真有人用了flushall/flushdb文件很可能形成覆盖
不用很可能!!
就是会:(他甚至不愿意比较一下文件的大小,直接取决于时间,不过也对!!!,假若是用户确实是需要进行这样的操作呢?那你岂不是违反用户意愿了吗?)

手动触发保存rdb(手动挡)
- 应用情景:
当你突然保存所谓非常重要的数据时,例如保存了1个亿那么我们可以手动保存rdb为了安全起见
- 命令
- save:(坚决不可用,会造成堵塞现象,redis的主线程会停止其他工作专心保存rdb文件,造成堵塞现象,在生成中会造成不可用现象万万不可用)
- BGsave(使用fork,生成一个子进程,这个子进程会来进行保存rdb工作,不会影响到主进程完成保存的功能)
fork:
Redis的fork是指Redis进程复制自身,创建一个与当前Redis实例相同的新进程。这个新进程和原来的Redis实例共享同一个配置文件、数据文件和端口号等资源,但是它们是两个独立的进程,互不影响。
额外命令
- LASTSAVE:获取最后一次保存的时间(
LASTSAVE命令获取的是一个Unix时间戳)
可以使用linux的
date -d @时间戳来获取我们能读懂的时间也可以
redis-cli DATE +%Y-%m-%d %H:%M:%S [lastsave timestamp]
=> "2022-03-14 14:38:05"其中,
[lastsave timestamp]是上一步中通过LASTSAVE命令获取到的Unix时间戳。
rdb的优势与劣势
优势
- rdb文件可以保存到远方服务器,安全性高
- rdb文件读入内存的时间比aof在内存中执行操作的时间快
- 适合大规模数据的恢复(快嘛)
劣势
- 无法及时且无漏缺的保存下每一时刻的redis数据和状态(可能被掐点kill掉进程或者服务器宕机,快照间的数据无法保存)
- rdb在保存的时候需要经常使用fork()来生成一个子进程保存rdb,如果cpu性能不高且redis更新量过大,可能会导致redis停止服务几毫秒甚至1s
rdb修复
万一rdb在写入一条数据时,或者传输时都可能文件出现损坏,可能导致整个rdb文件无法使用
修复命令
linux使用:redis-check-rdb rdb文件地址

保存rdb触发情况
- 达成conf文件设置的保存条件
- flushall/flushdb使用,不过是空的rdb
- shutdown
- 手动档操作:save/bgsave
- 主从复制时,主节点自动触发
关闭使用rdb的机制
- 命令:redis-cli config set save ""
- 配置文件里把 save ""的注释解除
RDB优化配置项详解
配置文件SNAPSHOTTING模块(几乎不用改,默认就可以了)
- stop-writes-on-bgsave-error:字面意思(最好是yes,如果你在乎数据一致性的话)
- rdbcompression:会对快照进行压缩,同时消耗点cpu,默认yes
- rdbchecksum:默认yes,存储快照后会用算法来进行数据校验,同时也会增加10%的性能消耗
- rdb-del-sync-files:在没有持久性的情况下删除复制中使用的RDB文件启用。默认情况下no,此选项是禁用的。(目前不是很理解)
插眼~有不理解的点
rdb-del-sync-files是Redis配置文件中的一个选项,它的作用是在主节点上执行BGSAVE或AOF持久化操作时,删除同步锁文件,以释放磁盘空间。当这个选项设置为yes时,Redis会自动删除同步锁文件;当这个选项设置为no时,Redis不会自动删除同步锁文件。
RDB初步了解的更多相关文章
- NoSQL初探之人人都爱Redis:(4)Redis主从复制架构初步探索
一.主从复制架构简介 通过前面几篇的介绍中,我们都是在单机上使用Redis进行相关的实践操作,从本篇起,我们将初步探索一下Redis的集群,而集群中最经典的架构便是主从复制架构.那么,我们首先来了解一 ...
- 【转】 NoSQL初探之人人都爱Redis:(4)Redis主从复制架构初步探索
一.主从复制架构简介 通过前面几篇的介绍中,我们都是在单机上使用Redis进行相关的实践操作,从本篇起,我们将初步探索一下Redis的集群,而集群中最经典的架构便是主从复制架构.那么,我们首先来了解一 ...
- redis做RDB时请求超时case
近期在排查redis做rdb时会有部分请求超时的case.初步推断是我们redisserver上开启了THP(Transparent Huge Pages). 1) Linux本身的 ...
- 使用AOF持久化文件实现还原Redis数据库并得到RDB持久化文件
目录 1 编写本文的初衷 2 具体实施 2.1 Redis持久化概念简介 2.2 获取指定Redis的AOF持久化文件 2.3 把Redis的持久化AOF文件转换为RDB文件 1 编写本文的初衷 因为 ...
- 移动端之Android开发的几种方式的初步体验
目前越来越多的移动端混合开发方式,下面列举的大多数我都略微的尝试过,就初步的认识写个简单的心得: 开发方式 开发环境 是否需要AndroidSDK 支持跨平台 开发语言&技能 MUI Win+ ...
- CSharpGL(29)初步封装Texture和Framebuffer
+BIT祝威+悄悄在此留下版了个权的信息说: CSharpGL(29)初步封装Texture和Framebuffer +BIT祝威+悄悄在此留下版了个权的信息说: Texture和Framebuffe ...
- Android自定义View初步
经过上一篇的介绍,大家对于自定义View一定有了一定的认识,接下来我们就以实现一个图片下显示文字的自定义View来练习一下.废话不多说,下面进入我们的正题,首先看一下我们的思路,1.我们需要通过在va ...
- 初步认识Node 之Node为何物
很多人即便是在使用了Node之后也不知道它到底是什么,阅读完本文你应该会有一个初步的.具体的概念了. Node的目标 提供一种简单的构建可伸缩网络程序的方法.那么,什么是可伸缩网络程序呢?可伸缩 ...
- [入门级] 基于 visual studio 2010 mvc4 的图书管理系统开发初步 (二)
[入门级] 基于 visual studio 2010 mvc4 的图书管理系统开发初步 (二) Date 周六 10 一月 2015 By 钟谢伟 Category website develop ...
- redis持久化RDB和AOF
Redis 持久化: 提供了多种不同级别的持久化方式:一种是RDB,另一种是AOF. RDB 持久化可以在指定的时间间隔内生成数据集的时间点快照(point-in-time snapshot). AO ...
随机推荐
- Redis 报”OutOfDirectMemoryError“(堆外内存溢出)
Redis 报错"OutOfDirectMemoryError(堆外内存溢出) "问题如下: 一.报错信息: 使用 Redis 的业务接口 ,产生 OutOfDirectMemor ...
- 使用Vue.js实现文字跑马灯效果
实现文字跑马灯效果,首先用到 substring()截取 和 setInterval计时器 clearInterval()清除计时器 效果如下: 实现代码如下: <!DOCTYPE html&g ...
- 搭建CTF动态靶场
前言 本文借鉴文章:https://www.yuque.com/dengfenglai-esbap/kb/mc4k41?#xOxNG 在此基础上修改了一点(照着原来的做没成功),感谢这位师傅给的资源. ...
- 如何通过C#/VB.NET 代码调整PDF文档的页边距
PDF边距是页面主要内容区域和页面边缘之间的距离.与Word页边距不同,PDF文档的页边距很难更改.因为Adobe没有提供操作页边距的直接方法.但是,您可以通过缩放页面内容来改变页边距.本文将介绍如何 ...
- 【Vue2】NavigationDuplicated: Avoided redundant navigation to current location:xxxxx
翻译过来就是,导航重复:避免了到当前位置的冗余导航. 简单来说就是重复跳转了相同路径 原因 触发这种情况是因为vue-router中引入了primise,当传递了多次重复的参数就会抛出异常,而这种问题 ...
- SQL语句获取数据表结构定义,适合导出EXCEL为文档
SELECT 表名 = Case When A.colorder=1 Then D.name Else '' End, 表说明 = Case When A.colorder=1 Then isnull ...
- String、StringBuilder、StringBuffer使用场景
String:加了final修饰,长度不可变,每次修改会创建新String:操作少量数据或者不需要操作数据时使用. StringBuilder:长度可变,线程不安全:在需要频繁操作数据且不需要考虑线程 ...
- python使用docxtpl生成word模板
python-docxtpl包简单使用和实战,Python处理word,docx文件. 最近需要处理一些爬虫得到的数据来进行一些自动化报告的操作,因为需要生成的是word的报告,所以估选用docxtp ...
- 2021-04-25:给定一个数组arr,和一个正数M,返回在arr的子数组在长度不超过M的情况下,求最大的累加和。
福大大 答案2021-04-25: 前缀和+左大右小的双端队列.时间太晚了,所以写得简单. 代码用golang编写.代码如下: package main import ( "containe ...
- uni-app 环境搭建
环境搭建:下载Hbuilder X开发者工具 下载Hbuilderhttps://www.dcloud.io/index.htmlhttps://www.dcloud.io/hbuilderx.htm ...