首页 > 数据库 >Redis7 数据持久化RDB

Redis7 数据持久化RDB

时间:2023-09-23 20:02:21浏览次数:32  
标签:快照 dump Redis7 redis 内存 RDB 持久 数据

一、概述

1、官网介绍

Redis7 数据持久化RDB_子进程

2、是什么

在指定时间间隔,执行数据集的时间点快照

实现类似照片记录效果的方式,就是把某一时刻的数据和状态以文件的形式写到磁盘上,也就是快照。
这样一来即使故障宕机,快照文件也不会丢失,数据的可靠性也就得到了保证。
这个快照文件就称为RDB文件(dump.rdb),其中,RDB就是Redis DataBase的缩写。

3、能干嘛

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

redis的数据都在内存中,保留备份时它执行的是全量快照,也就是说,把内存中的所有数据都记录到磁盘中,一锅端

rdb保存的是dump.rdb文件


二、案例演示

需求说明

Redis7 数据持久化RDB_redis_02

配置文件(6 vs 7)

redis6.0.16以下

Redis7 数据持久化RDB_数据_03

redis6.2以及redis7.0.0

Redis7 数据持久化RDB_数据_04

操作步骤

自动触发

redis7版本,按照redis.conf里配置的save <seconds> <changes>

Redis7 数据持久化RDB_数据_05

本次案例5秒2次修改

Redis7 数据持久化RDB_数据_06

修改dump文件保存路径

Redis7 数据持久化RDB_数据_07

修改dump文件名称

Redis7 数据持久化RDB_数据_08

触发备份

第一种情况

Redis7 数据持久化RDB_数据_09

第二种情况

Redis7 数据持久化RDB_redis_10

如何恢复

将备份文件(dump.rdb)移动到redis安装目录并启动服务即可
备份成功后故意用flushdb情况redis,看看是否可以恢复数据

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

物理恢复,一定服务和备份分机隔离

Redis7 数据持久化RDB_子进程_11

手动触发

save和bgsave
redis提供了两个命令来生成RDB文件,分别是save个bgsave

Save 
在主程序中执行会阻塞当前redis服务器,直到持久化工作完成,执行save命令期间,redis不能处理其他命令,线上禁止使用

Redis7 数据持久化RDB_数据_12

BGSAVE(默认)
redis会在后台异步进行快照操作,不阻塞
快照同时还可以响应客户端情况,该触发方式会fork一个子进程由子进程复制持久化过程

官网说明
redis会使用bgsave对当前内存中的所有数据做快照
这个操作是子进程在后台完成的,这就允许主进程同时可以修改数据

fork是什么
在Linux程序中,fork()会产生一个和父进程完全相同的子进程,但子进程在此后多会exec系统调用,出于效率考虑,尽量避免膨胀。

Redis7 数据持久化RDB_子进程_13

Redis7 数据持久化RDB_数据_14

LASTSAVE
可以通过lastsave命令获取最后一次成功执行快照的时间

Redis7 数据持久化RDB_数据_15

三、优势和劣势

优势

Redis7 数据持久化RDB_数据_16

适合大规模的数据恢复
按照业务定时备份
对数据完整性和一致性要求不高
RDB文件在内存中的加载速度要比AOF快得多

劣势

Redis7 数据持久化RDB_redis_17

在一定间隔时间做一次备份,所以如果redis意外down掉的话,就会丢失从当前至最近一次快照期间的数据,快照之间的数据会丢失
内存数据的全量同步,如果数据量太大会导致I/O严重影响服务器性能
RDB依赖于主进程的fork,在更大的数据集中,这可能会导致服务请求的瞬间延迟
fork的时候内存中的数据呗克隆了一份,大致2倍的膨胀性,需要考虑

数据丢失案例
正常录入数据
kill -9故意模拟意外down掉
redis重启恢复,查看数据是否丢失

Redis7 数据持久化RDB_数据_18

四、检查修复dump.rdb

Redis7 数据持久化RDB_数据_19

五、触发RDB快照

配置文件中默认的快照配置
手动save/bgsave命令
执行flushall/flushdb命令也会产生dump.rdb,但里面是空的,无意义
执行shutdown或者kill(不是kill -9)且没有设置开启AOF持久化
主从复制时,主节点自动触发

六、禁用快照

动态所有停止RDB保存规则的方法

redis-cli config set save ""

快照禁用

Redis7 数据持久化RDB_数据_20

七、RDB优化配置项

配置文件SNAPSHOTTING模块

save <seconds> <changes>

dbfilename

dir

stop-writes-on-bgsave-error

Redis7 数据持久化RDB_子进程_21

rdbcompression

Redis7 数据持久化RDB_子进程_22

rdbchecksum

Redis7 数据持久化RDB_数据_23

rdb-del-sync-files

Redis7 数据持久化RDB_redis_24

八、总结

Redis7 数据持久化RDB_redis_25

标签:快照,dump,Redis7,redis,内存,RDB,持久,数据
From: https://blog.51cto.com/u_13236892/7580652

相关文章

  • Redis持久化
    Redis持久化Redis的持久化-WK_BlogYard-博客园(cnblogs.com)‍我们知道,Redis数据库中的数据都是存放在内存中,虽然很高效,但是这样存在一个非常严重的问题,如果突然停电,那我们的数据不就全部丢失了吗?它不像硬盘上的数据,断电依然能够保存。这个时候我们就需要持久化,我们需......
  • Token持久化存储
    Token持久化存储我们之前使用SpringSecurity时,remember-me的Token是支持持久化存储的,而我们当时是存储在数据库中,那么Token信息能否存储在缓存中呢,当然也是可以的,我们可以手动实现一个://实现PersistentTokenRepository接口@ComponentpublicclassRedisTokenRepositoryimplem......
  • ClickHouse的数据持久化与恢复机制
    简介ClickHouse是一个高性能的列式数据库,它的数据持久化和恢复机制是其重要的特性之一。本文将深入探讨ClickHouse的数据持久化与恢复机制。数据持久化ClickHouse的数据持久化是通过将数据写入磁盘来实现的。ClickHouse使用了一种称为MergeTree的存储引擎,它将数据按照时间戳分成......
  • Redis7 10大数据类型(Redis位域)
    一、是什么二、能干嘛位域修改溢出控制三、概述将一个redis字符串看作是一个由二进制位组成的数组并能对变长位宽和任意没有字节对齐的指定整型位域进行寻址和修改四、命令基本语法五、案例Ascii码表https://ascii.org.cn/基本命令代码实操BITFIELDkey[GETtypeoffset]BITFI......
  • redisde持久化机制
    他的持久化机制有两种一种是(rdb)快照一种是(aof)日志快照的话是全量的一个备份日志是连续的增加备份.快照机制是redis默认开启de,她会根据配置的策略将内存的数据保存在本地的二进制文件中官方提供两种方式生成快照一种是save命令但是有缺点会阻塞我们的主进程当如果数......
  • 【WPF】PasswordBox汇总
    一、回车事件写法1:绑定:TextPassWord.KeyDown+=TextPassWord_KeyDown;privatevoidTextPassWord_KeyDown(objectsender,KeyEventArgse){if(e.Key==Key.Enter){TextErr.Text=null;......
  • Redis持久化机制
    Redis的数据全部在内存里,如果突然宕机,数据就会全部丢失,因此必须有一种机制来保证Redis的数据不会因为故障而丢失,这种机制就是Redis的持久化机制。Redis的持久化机制有两种,第一种是RDB快照,第二种是AOF日志。快照是一次全量备份,AOF日志是连续的增量备份。快照是内存数据的......
  • Redis7 10大数据类型(Redis地理空间)
    一、简介移动互联网时代LBS应用越来越多,交友软件中附近的小姐姐、外卖软件中附近的美食店铺、高德地图附近的核酸检查点等等,那这种附近各种形形色色的XXX地址位置选择是如何实现的?地球上的地理位置是使用二维的经纬度表示,经度范围(-180,180],纬度范围(-90,90],只要我们确定一个......
  • Redis7 10大数据类型(Redis基数统计)
    一、概述用途:统计某个网站的UV,统计某个文章的UV什么是UVUniqueVisitor独立访客,一般理解为客户端ip用户搜索网站关键词的数量统计用户每天搜索不同词条个数去重复统计功能的基数估计算法,就是HyperLogLog基数是一种数据集,去重复后的真实个数案例case基数统计用户统计......
  • oracle to polardb-o (postgresql) dblink创建步骤
    一、架构图本质上polardb-o的底层是postgresql数据库,因此该需求可以转换为创建 oracleto postgresql的dblink。1. 原理图 2.实际架构 下面为实际创建步骤二、安装依赖包yuminstall-yunixODBCyuminstall-yunixODBC-develyuminstall-ylibtoolyuminstall-ylib......