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 ...
随机推荐
- SpringBoot应用集成微服务组件Nacos
目录 springboot与微服务组件nacos Nacos服务快速启动 STS4 开发工具 Maven 环境配置 STS4开发工具引入Maven配置 Maven Repo配置阿里云镜像源 Sprin ...
- Linux 根据名称自动kill掉当前相关进程
ps aux | grep app | grep -v "grep" | awk '{print $2}' | xargs -r kill
- win系统安装wordcloud报错解决方案
问题: ① 在命令行下执行pip install wordcloud出现报错如图: ②下载了错误的whl文件, 出现wordcloud-1.4.1-cp27-cp27m-win_amd64.whl i ...
- Python-趣味小程序
1.效果 2.代码 import sys import time def print_act(word): #print('\n'+' '+'\r') #让光标回到行首 sys.stdout.writ ...
- C++ Primer 5th 阅读笔记:入门指南
学习方法 The way to learn a new programming language is to write programs. 学习一门新编程语言的方式是编写程序. 函数(Functio ...
- 2023-03-24:音视频mp3和h264混合(muxer)编码为mp4,用go语言编写。
2023-03-24:音视频mp3和h264混合(muxer)编码为mp4,用go语言编写. 答案2023-03-24: 这是一个使用FFmpeg库将MP3和H.264混合编码为MP4的Go语言程序. ...
- 2021-11-15:四数相加 II。给你四个整数数组 nums1、nums2、nums3 和 nums4 ,数组长度都是 n ,请你计算有多少个元组 (i, j, k, l) 能满足:0 <= i,
2021-11-15:四数相加 II.给你四个整数数组 nums1.nums2.nums3 和 nums4 ,数组长度都是 n ,请你计算有多少个元组 (i, j, k, l) 能满足:0 <= ...
- group_concat 自定义聚合查询
group_concat
- drf——登录功能、认证、权限、频率组件(Django转换器、配置文件作用)
Django转换器.配置文件作用 # django转换器 2.x以后 为了取代re_path int path('books/<int:pk>')--->/books/1---> ...
- 2023-05-27:给你一个只包含小写英文字母的字符串 s 。 每一次 操作 ,你可以选择 s 中两个 相邻 的字符,并将它们交换。 请你返回将 s 变成回文串的 最少操作次数 。 注意 ,输入数据
2023-05-27:给你一个只包含小写英文字母的字符串 s . 每一次 操作 ,你可以选择 s 中两个 相邻 的字符,并将它们交换. 请你返回将 s 变成回文串的 最少操作次数 . 注意 ,输入数据 ...