Redis 提供了多种不同级别的持久化方式:

  • RDB 持久化可以在指定的时间间隔内生成数据集的时间点快照(point-in-time snapshot)。
  • AOF (Append-only file)持久化记录服务器执行的所有写操作命令,并在服务器启动时,通过重新执行这些命令来还原数据集。 AOF 文件中的命令全部以 Redis 协议的格式来保存,新命令会被追加到文件的末尾。 Redis 还可以在后台对 AOF 文件进行重写(rewrite),使得 AOF 文件的体积不会超出保存数据集状态所需的实际大小。
  • Redis 还可以同时使用 AOF 持久化和 RDB 持久化。 在这种情况下, 当 Redis 重启时, 它会优先使用 AOF 文件来还原数据集, 因为 AOF 文件保存的数据集通常比 RDB 文件所保存的数据集更完整。
  • 你甚至可以关闭持久化功能,让数据只在服务器运行时存在。

一、RDB的持久化

工作原理:每隔一定时间给内存照一个快照,将内存中的数据写入文件(rdb文件)。这是Redis默认的持久化方式。当redis生成dump.rdb文件时,工作过程如下:

  • 当达到RDB生成条件时,redis主进程fork一个子进程
  • fork出来的子进程将内存的数据集dump到临时的RDB中
  • 当子进程对临时的RDB文件写入完毕,redis用新的RDB文件代替旧的RDB文件

配置参数如下:

RDB示例测试:可以使用redis-benchmark进行压力测试,观察RDB文件大小的变化。

bin/redis-benchmark -n 100000  表示执行100000个操作

二、RDB的缺点:

在两次快照之间,如果发生断电,数据会丢失。举例:在生成rdb后,插入新值。突然断电,数据可能会丢失。

三、监控RDB:

Redis监控最直接的方法当然就是使用系统提供的 info 命令来做了,只需要执行下面一条命令,就能获得 Redis 系统的状态报告。

bin/redis-cli info | grep rdb_
  • rdb_changes_since_last_save 表明上次RDB保存以后改变的key次数
  • rdb_bgsave_in_progress 表示当前是否在进行bgsave操作,1表示正在进行;0表示没有进行
  • rdb_last_save_time 上次保存RDB文件的时间戳
  • rdb_last_bgsave_time_sec 上次保存的耗时
  • rdb_last_bgsave_status 上次保存的状态
  • rdb_current_bgsave_time_sec 目前保存RDB文件已花费的时间

【赵渝强老师】Redis的RDB持久化的更多相关文章

  1. 一文了解:Redis的RDB持久化

    一文了解:Redis的RDB持久化 Redis是内存数据库,为了保证数据不在故障后丢失,Redis需要将数据持久化到硬盘上. Redis持久化有两种方式:一种是快照,全量备份.一种是AOF方式,连续增 ...

  2. redis之RDB持久化与AOF持久化

    Redis是一个键值对数据库服务器,服务器中通常包含着任意个非空数据库,而每个非空数据库中又可以包含任意个键值对,为了方便起见,我们将服务器中的非空数据库以及它们的键值对统称为数据库状态. 因为Red ...

  3. 看完这篇还不懂Redis的RDB持久化,你们来打我!

    一.为什么需要持久化 redis里有10gb数据,突然停电或者意外宕机了,再启动的时候10gb都没了?!所以需要持久化,宕机后再通过持久化文件将数据恢复. 二.优缺点 1.rdb文件 rdb文件都是二 ...

  4. Redis使用RDB持久化和AOF持久化的区别 - 小白之所见

  5. Redis详解(六)------ RDB 持久化

     前面我们说过,Redis 相对于 Memcache 等其他的缓存产品,有一个比较明显的优势就是 Redis 不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,has ...

  6. Redis 详解 (六) RDB 持久化

    目录 1.RDB 简介 2.触发方式 ①.自动触发 ②.手动触发 3.恢复数据 4.停止 RDB 持久化 5.RDB 的优势和劣势 6.RDB 自动保存的原理  前面我们说过,Redis 相对于 Me ...

  7. Redis基础与持久化

    Redis介绍 软件说明 Redis是一款开源的,ANSI C语言编写的,高级键值(key-value)缓存和支持永久存储NoSQL数据库产品. Redis采用内存(In-Memory)数据集(Dat ...

  8. mysql主从复制、redis基础、持久化和主从复制

    一.mysql(mariadb)基础 1.基础命令(centos7操作系统下) 1.启动mysql systemctl start mariadb 2.linux客户端连接自己 mysql -uroo ...

  9. 第10章 RDB持久化

    Redis是一种内存数据库,掉电即失,为了解决这个问题Redis提供了RDB持久化功能,该功能可以把Redis中的内容以RDB文件的形式存储在硬盘上,并且每次RedisServer启动的时候都会尝试从 ...

  10. Redis的数据持久化

    介绍 Redis 的数据持久化方案 Redis 的数据持久化主要有两大机制,AOF 日志和 RDB 快照. AOF 持久化是通过保存 Redis 服务器所执行的写命令来记录数据库状态. RDB 持久化 ...

随机推荐

  1. 【GeoScene】一、创建、发布路网服务,并在代码中测试最短路径分析

    前言 网上关于GeoScene及GeoScene API for JavaScript的资料太少了,官方的技术支持又太慢了,最近把在项目中踩过的坑分享出来: **版本信息** GeoScene Pro ...

  2. 【Java】比较业务实体信息变化的工具类

    一.业务需求 需要将业务表每次更新操作的前后记录进行保存,写入更新历史表中 方便用户查阅该业务记录发生的历史变化 二.代码实现 import lombok.AllArgsConstructor; im ...

  3. (续)signal-slot:python版本的多进程通信的信号与槽机制(编程模式)的库(library) —— 强化学习ppo算法库sample-factory的多进程包装器,实现类似Qt的多进程编程模式(信号与槽机制) —— python3.12版本下成功通过测试

    前文: signal-slot:python版本的多进程通信的信号与槽机制(编程模式)的库(library) -- 强化学习ppo算法库sample-factory的多进程包装器,实现类似Qt的多进程 ...

  4. 使用Redis时的vm.overcommit_memory内存分配控制

    最近在使用Redis的时候遇到了linux系统中的vm.overcommit_memory参数设置,对此不是很了解,于是研究了一下,有了本文. ============================ ...

  5. mybatis-plus系统化学习之配置精讲

    1.背景 mybatis-plus给出了很多配置, 大部分的配置使用默认的就可以了, 但是还是有很多需要的配置比如: # mybatis-plus相关配置 mybatis-plus: # xml扫描, ...

  6. 《最新出炉》系列小成篇-Python+Playwright自动化测试-67 - 模拟手机浏览器兼容性测试

    1.简介 在日常工作中,我们会遇到需要使用不同的硬件设备测试兼容性的问题,尤其是现在手机型号基本上是每个厂家每年发布一款新机型,而且手机的屏幕大小分辨率五花八门的,我们基本不可能全部机型都用真机测试一 ...

  7. 这就是为什么你学不会DDD

    本文书接上回<为了给Javaer落地DDD,我们不得不写开源组件>,欢迎关注公众号(老肖想当外语大佬),获取最新文章更新和DDD框架源码,视频和直播在B站. https://mp.weix ...

  8. 需要多久才能看完linux内核源码?

    代码中自由颜如玉!代码中自有黄金屋! 一.内核行数 Linux内核分为CPU调度.内存管理.网络和存储四大子系统,针对硬件的驱动成百上千.代码的数量更是大的惊人. 先说说最早的内核linux 0.11 ...

  9. Java——N以内累加求和

    2024/07/15 1.题目 2.错误 3.分析 4.答案 1.题目 2.错误 import java.util.Scanner; public class Main { public static ...

  10. 初三奥赛模拟测试1--T1回文

    初三奥赛模拟测试1--\(T1\)回文 HZOI 题意 给定一个 \(n \times m\) 的,由字符组成的矩阵 \(A\) , 问你由 \(( 1 , 1 )\) 开始,点 \(( i , j ...