RDB概念

  1. 快照文件是.rdb结尾
  2. redis6.2以前和之后(包括6.2)在什么条件下会保存rdb文件有所不同
    1. 以前

      1. 15min&&1个key(改变)调用保存
      2. 5min&&10key(改变)调用保存
      3. 1min&&10000key(改变)调用保存
    2. 之后(改变)
      1. 60min&&1key(改变)调用保存
      2. 5min&&100key(改变)调用保存
      3. 没有变化

RDB要修改配置文件的地方

  1. 文件名
  2. 可以修改下文件的保存时间(save time changes)
  3. 保存文件的地方:dir ....

RDB完成使命的道路(自动挡)

  1. 只要达到条件就会生成一个rdb
  2. flushall/flushdb也会自动生成一个rdb但是是空的
  3. shutdown也会自动生成一个rdb(不为空,同时即使没有满足到原先保存的条件也会保存)
  4. redis在重启的时候会默认在我们原先指定好的dir(存放rdb文件的位置)来读取rdb,恢复数据

在生成rdb文件中一定要存在另一台服务器上,防止生产机物理损坏后备份文件也挂了,同时生成的rdb只会是一个,倘若真有人用了flushall/flushdb文件很可能形成覆盖

不用很可能!!

就是会:(他甚至不愿意比较一下文件的大小,直接取决于时间,不过也对!!!,假若是用户确实是需要进行这样的操作呢?那你岂不是违反用户意愿了吗?)

手动触发保存rdb(手动挡)

  • 应用情景:

当你突然保存所谓非常重要的数据时,例如保存了1个亿那么我们可以手动保存rdb为了安全起见

  • 命令
  1. save:(坚决不可用,会造成堵塞现象,redis的主线程会停止其他工作专心保存rdb文件,造成堵塞现象,在生成中会造成不可用现象万万不可用)
  2. BGsave(使用fork,生成一个子进程,这个子进程会来进行保存rdb工作,不会影响到主进程完成保存的功能)

fork:

Redis的fork是指Redis进程复制自身,创建一个与当前Redis实例相同的新进程。这个新进程和原来的Redis实例共享同一个配置文件、数据文件和端口号等资源,但是它们是两个独立的进程,互不影响。

额外命令

  • LASTSAVE:获取最后一次保存的时间(LASTSAVE命令获取的是一个Unix时间戳)
  1. 可以使用linux的date -d @时间戳来获取我们能读懂的时间

    也可以

  2. redis-cli DATE +%Y-%m-%d %H:%M:%S [lastsave timestamp]
    => "2022-03-14 14:38:05"

    其中,[lastsave timestamp]是上一步中通过LASTSAVE命令获取到的Unix时间戳。

rdb的优势与劣势

优势

  1. rdb文件可以保存到远方服务器,安全性高
  2. rdb文件读入内存的时间比aof在内存中执行操作的时间快
  3. 适合大规模数据的恢复(快嘛)

劣势

  1. 无法及时且无漏缺的保存下每一时刻的redis数据和状态(可能被掐点kill掉进程或者服务器宕机,快照间的数据无法保存)
  2. rdb在保存的时候需要经常使用fork()来生成一个子进程保存rdb,如果cpu性能不高且redis更新量过大,可能会导致redis停止服务几毫秒甚至1s

rdb修复

万一rdb在写入一条数据时,或者传输时都可能文件出现损坏,可能导致整个rdb文件无法使用

修复命令

linux使用:redis-check-rdb rdb文件地址

保存rdb触发情况

  1. 达成conf文件设置的保存条件
  2. flushall/flushdb使用,不过是空的rdb
  3. shutdown
  4. 手动档操作:save/bgsave
  5. 主从复制时,主节点自动触发

关闭使用rdb的机制

  1. 命令:redis-cli config set save ""
  2. 配置文件里把 save ""的注释解除

RDB优化配置项详解

配置文件SNAPSHOTTING模块(几乎不用改,默认就可以了)

  1. stop-writes-on-bgsave-error:字面意思(最好是yes,如果你在乎数据一致性的话)
  2. rdbcompression:会对快照进行压缩,同时消耗点cpu,默认yes
  3. rdbchecksum:默认yes,存储快照后会用算法来进行数据校验,同时也会增加10%的性能消耗
  4. rdb-del-sync-files:在没有持久性的情况下删除复制中使用的RDB文件启用。默认情况下no,此选项是禁用的。(目前不是很理解)

插眼~有不理解的点

rdb-del-sync-files是Redis配置文件中的一个选项,它的作用是在主节点上执行BGSAVE或AOF持久化操作时,删除同步锁文件,以释放磁盘空间。当这个选项设置为yes时,Redis会自动删除同步锁文件;当这个选项设置为no时,Redis不会自动删除同步锁文件。

RDB初步了解的更多相关文章

  1. NoSQL初探之人人都爱Redis:(4)Redis主从复制架构初步探索

    一.主从复制架构简介 通过前面几篇的介绍中,我们都是在单机上使用Redis进行相关的实践操作,从本篇起,我们将初步探索一下Redis的集群,而集群中最经典的架构便是主从复制架构.那么,我们首先来了解一 ...

  2. 【转】 NoSQL初探之人人都爱Redis:(4)Redis主从复制架构初步探索

    一.主从复制架构简介 通过前面几篇的介绍中,我们都是在单机上使用Redis进行相关的实践操作,从本篇起,我们将初步探索一下Redis的集群,而集群中最经典的架构便是主从复制架构.那么,我们首先来了解一 ...

  3. redis做RDB时请求超时case

        近期在排查redis做rdb时会有部分请求超时的case.初步推断是我们redisserver上开启了THP(Transparent Huge Pages).      1) Linux本身的 ...

  4. 使用AOF持久化文件实现还原Redis数据库并得到RDB持久化文件

    目录 1 编写本文的初衷 2 具体实施 2.1 Redis持久化概念简介 2.2 获取指定Redis的AOF持久化文件 2.3 把Redis的持久化AOF文件转换为RDB文件 1 编写本文的初衷 因为 ...

  5. 移动端之Android开发的几种方式的初步体验

    目前越来越多的移动端混合开发方式,下面列举的大多数我都略微的尝试过,就初步的认识写个简单的心得: 开发方式 开发环境 是否需要AndroidSDK 支持跨平台 开发语言&技能 MUI Win+ ...

  6. CSharpGL(29)初步封装Texture和Framebuffer

    +BIT祝威+悄悄在此留下版了个权的信息说: CSharpGL(29)初步封装Texture和Framebuffer +BIT祝威+悄悄在此留下版了个权的信息说: Texture和Framebuffe ...

  7. Android自定义View初步

    经过上一篇的介绍,大家对于自定义View一定有了一定的认识,接下来我们就以实现一个图片下显示文字的自定义View来练习一下.废话不多说,下面进入我们的正题,首先看一下我们的思路,1.我们需要通过在va ...

  8. 初步认识Node 之Node为何物

    很多人即便是在使用了Node之后也不知道它到底是什么,阅读完本文你应该会有一个初步的.具体的概念了.    Node的目标 提供一种简单的构建可伸缩网络程序的方法.那么,什么是可伸缩网络程序呢?可伸缩 ...

  9. [入门级] 基于 visual studio 2010 mvc4 的图书管理系统开发初步 (二)

    [入门级] 基于 visual studio 2010 mvc4 的图书管理系统开发初步 (二) Date  周六 10 一月 2015 By 钟谢伟 Category website develop ...

  10. redis持久化RDB和AOF

    Redis 持久化: 提供了多种不同级别的持久化方式:一种是RDB,另一种是AOF. RDB 持久化可以在指定的时间间隔内生成数据集的时间点快照(point-in-time snapshot). AO ...

随机推荐

  1. 华为云 OpenTiny 跨端、跨框架企业级开源组件库项目落地实践直播即将开启!

    大家好,我是 Kagol,公众号:前端开源星球. "你们这个产品怎么只能在电脑上适配呀?我想在手机上看都不行,太麻烦了!!" "你们这个产品看起来太简单了,我想要@@功能 ...

  2. [双目视差] 单双目MATLAB 相机标定(二)双目摄像机标定

    文章目录 单双目MATLAB 相机标定(二)双目摄像机标定 一.环境准备 二.标定过程 单双目MATLAB 相机标定(二)双目摄像机标定 一.环境准备 MATLAB R2014a+windows7 6 ...

  3. 【问题解决】RabbitMQ启动出现epmd error for host xx.xx: nxdomain (non-existing domain)

    问题描述 [k8s]或[普通容器]或[Linux]部署的RabbitMQ启动时出现了 epmd error for host xx.xx: nxdomain (non-existing domain) ...

  4. abp(net core)+easyui+efcore实现仓储管理系统——供应商管理升级之上(六十三)

    abp(net core)+easyui+efcore实现仓储管理系统目录 abp(net core)+easyui+efcore实现仓储管理系统--ABP总体介绍(一) abp(net core)+ ...

  5. “StackLLaMA”: 用 RLHF 训练 LLaMA 的手把手教程

    如 ChatGPT,GPT-4,Claude语言模型 之强大,因为它们采用了 基于人类反馈的强化学习 (Reinforcement Learning from Human Feedback, RLHF ...

  6. 【自用】无限级分类获取SQL语句

    自定义函数: 1 USE [ExpenseCenter_Fibrogen] 2 GO 3 /****** Object: UserDefinedFunction [dbo].[GetSubordina ...

  7. vue全家桶进阶之路41:Vue3 语法糖<script setup>

    <script setup> 是 Vue 3 中的一种语法糖,它可以使组件的脚本更加简洁.易读,并且减少了一些样板代码.使用 <script setup>,你可以将组件的 pr ...

  8. ModuleNotFoundError: No module named 'flask_sqlalchemy'

    ModuleNotFoundError: No module named 'flask_sqlalchemy' 解决: pip install flask_sqlalchemy

  9. 【实践篇】领域驱动设计:DDD工程参考架构

    背景 为什么要制定参考工程架构 不同团队落地DDD所采取的应用架构风格可能不同,并没有统一的.标准的DDD工程架构.有些团队可能遵循经典的DDD四层架构,或改进的DDD四层架构,有些团队可能综合考虑分 ...

  10. 最全的git操作命令(持续更新)

    当前使用git进行版本管理越来越频繁,但是难免还是有些命令记不全,曾当前闲暇记录一下,免得需要时漫天找寻 目录 一. 配置用户信息 1.git config [配置git 用户信息] 2.git co ...