首页 > 数据库 >redis rdb与snapshot的关系

redis rdb与snapshot的关系

时间:2022-11-06 12:11:06浏览次数:36  
标签:快照 rdb redis snapshot RDB 进程 数据

关系

RDB是Redis用来进行持久化的一种方式,在指定的时间间隔内将当前内存中的数据集快照写入磁盘,也就是 Snapshot 快照(数据库中所有键值对数据)。恢复时是将快照文件直接读到内存里。

redis会单独创建(fork)一个子进程进行持久化,会先将数据写入到一个临时文件中,待持久化过程都结束了,再用这个临时文件替换上一次持久化好的文件,整个过程,主进程是不进行任何IO操作的,这就确保了极高的性能。如果需要进行大规模数据的恢复,且对于数据恢复的完整性不是非常敏感,那RDB方式要比AOF方式更加的高效。

RDB的缺点是最后一次持久化后的数据可能丢失。

Fork的作用是复制一个与当前进程一样的进程。新进程的所有数据(变量、环境变量、程序计数器等)数值都和原进程一致,但是是一个全新的进程,并作为原进程的子进程。保存的文件为dump.rdb文件。

触发条件

  • 根据conf每300秒如果有100次更新就进行一次snapshot(自动触发)
  • 用户执行bgsave命令(手动触发)
  • 用户执行flushall命令(手动触发)
  • 主从全量复制时,主会fork生成当前数据的snapshot(rdb),然后发给从

其他

  • 当然如果你只是用Redis的缓存功能,不需要持久化,那么你可以注释掉所有的 save 行来停用保存功能。可以直接一个空字符串来实现停用:save ""
  • rdbcompression ;默认值是yes。对于存储到磁盘中的快照,可以设置是否进行压缩存储。如果是的话,redis会采用LZF算法进行压缩。如果你不想消耗CPU来进行压缩的话,可以设置为关闭此功能,但是存储在磁盘上的快照会比较大。
  • rdbchecksum :默认值是yes。在存储快照后,我们还可以让redis使用CRC64算法来进行数据校验,但是这样做会增加大约10%的性能消耗,如果希望获取到最大的性能提升,可以关闭此功能。
  • dbfilename :设置快照的文件名,默认是 dump.rdb

rdb快照的优点

  1. RDB是一个非常紧凑的文件,它保存了某个时间点得数据集,非常适用于数据集的备份,比如你可以在每个小时报保存一下过去24小时内的数据,同时每天保存过去30天的数据,这样即使出了问题你也可以根据需求恢复到不同版本的数据集。
  2. RDB是一个紧凑的单一文件,很方便传送到另一个远端数据中心或者亚马逊的S3(可能加密),非常适用于灾难恢复。(复制)
  3. RDB在保存RDB文件时父进程唯一需要做的就是fork出一个子进程,接下来的工作全部由子进程来做,父进程不需要再做其他IO操作,所以RDB持久化方式可以最大化redis的性能。
  4. 与AOF相比,在恢复大的数据集的时候,RDB方式会更快一些。

rdb快照的缺点

  1. 耗时、耗性能。RDB 需要经常fork子进程来保存数据集到硬盘上,当数据集比较大的时候,fork的过程是非常耗时的,可能会导致Redis在一些ms级内不能响应客户端的请求。如果数据集巨大并且CPU性能不是很好的情况下,这种情况会持续1秒,AOF也需要fork,但是你可以调节重写日志文件的频率来提高数据集的耐久度。
  2. 不可控丢失数据。如果你希望在redis意外停止工作(例如电源中断)的情况下丢失的数据最少的话,那么RDB不适合你。虽然你可以配置不同的save时间点(例如每隔5分钟并且对数据集有100个写的操作),是Redis要完整的保存整个数据集是一个比较繁重的工作,你通常会每隔5分钟或者更久做一次完整的保存,万一在Redis意外宕机,你可能会丢失几分钟的数据

标签:快照,rdb,redis,snapshot,RDB,进程,数据
From: https://www.cnblogs.com/lygin/p/16862323.html

相关文章

  • 使用jwt,redis,实现登录
    jwt是无状态的,不需要服务端存储登录用户信息,一次性生成token后,除非过期,不然是都可以用的。但是这样就产生了token续期、用户注销等问题。token续期怎么解决呢?1、使用......
  • Springboot2.x 结合 redis 实现ip请求次数限制
    参考https://cloud.tencent.com/developer/article/1607647SpringBoot整合Redis代码详解,四步搞定!https://blog.csdn.net/jinyangbest/article/details/98205802sprin......
  • Windows版的Redis安装
    到官网下载:​​​https://github.com/MicrosoftArchive/redis/releases​​​如果没有到如下网盘下载:​更改配置文件​Windows版的Redis有2个配置文件,一个是:redis.windows.c......
  • 微服务Spring Boot 整合Redis 基于Redis的Stream 消息队列 实现异步秒杀下单
    文章目录​​一、什么是Redis消息队列?​​​​二、Redis消息队列--基于RedisList实现消息队列​​​​三、Redis消息队列--基于Pubsub的消息队列​​​​四、......
  • 仿黑马点评-redis整合【二——商户查询缓存】——缓存穿透、缓存击穿的解决
    前言:......
  • Redis 的 Sentinel 系统
    介绍Redis的Sentinel系统技术是为了解决问题而生的,Redis的Sentinel系统实现了Redis主从服务器的自动切换。Sentinel是Redis的高可用性解决方案:由一个或多个......
  • 不同信创服务器Redis7.0.5性能表现总结
    不同信创服务器Redis7.0.5性能表现总结背景以及基础约定随着美帝2022.10收紧EAR规定的硬件出口规定信创事业迎来了一波新的高潮.最近不仅仅要求国产化的硬件.更要求......
  • Linux中redis启动修改密码操作
    启动在redis.conf同层目录下执行redis-serverredis.conf即可启动执行ps-ef|grepredis查看redis启动是否成功kill-985117停止redis redis-cli#连接本地r......
  • 【云原生】Redis on k8s 编排部署讲解与实战操作
    目录一、概述二、redis主从模式编排部署实战操作1)下载chart包2)构建镜像3)修改yaml编排4)开始部署5)测试验证6)卸载三、redis哨兵模式编排部署实战操作1)构建镜像2)修改yaml编......
  • Redis复制
    Redis复制功能是如何工作的每一个Redismaster都有一个replicationID:这是一个较大的伪随机字符串,标记了一个给定的数据集。每个master也持有一个偏移量,master将......