Redis-持久化操作-RDB

2024-05-14 17:20
文章标签 操作 redis 持久 rdb

本文主要是介绍Redis-持久化操作-RDB,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Redis持久化


由于Redis的数据都存放在内存中,如果没有配置持久化,Redis重启后数据就全丢失了,于是需要开启 Redis的持久化功能,将数据保存到磁盘上,当Redis重启后,可以从磁盘中恢复数据。

Redis提供了两个不同形式的持久化方式:

  • RDB(Redis DataBase)
  • AOF(Append Only File)

持久化操作-RDB

RDB是什么?

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

备份过程

Redis会单独创建(fork)一个子进程来进行持久化,会先将数据写入到一个临时文件中,待持久化过程 都结束了,再用这个临时文件替换上次持久化好的文件。

整个过程中,主进程是不进行任何IO操作的,这就确保了极高的性能,如果需要进行大规模数据的恢 复,且对于数据恢复的完整性不是非常敏感,那RDB方式要比AOF方式更加的高效。RDB的缺点是最后 一次持久化后的数据可能丢失。

在这里插入图片描述

dump.rdb文件

  1. RDB保存的文件,在redis.conf中配置文件名称,默认为dump.rdb。

    在这里插入图片描述

  2. rdb文件的保存位置,也可以修改。默认在Redis启动时命令行所在的目录下。

    在这里插入图片描述

    redis.conf中配置文件路径

    在这里插入图片描述

如何触发快照?

配置文件中默认的快照配置

在这里插入图片描述

  1. 快照默认配置

    save 3600 1:表示3600秒内(一小时)如果至少有1个key的值变化,则保存
    300 100:表示300秒内(五分钟)如果至少有100个 key 的值变化,则保存
    60 10000:表示60秒内如果至少有 10000个key的值变化,则保存
    

    可以自己配置新的保存规则。

  2. 例:给redis.conf添加新的快照策略,30秒内如果有5次key的变化,则触发快照。配置修改后,需 要重启Redis服务。

    在这里插入图片描述

    dump.rdb默认大小是89字节,里面会有一些基本信息。

    在这里插入图片描述

    30秒内设置5个以上的值。

    set k1 v1
    set k2 v2
    set k3 v3
    set k4 v4
    set k5 v5
    set k6 v6
    set k7 v7
    

    在这里插入图片描述

    dump.rdb大小已经改变。

    在这里插入图片描述

flushall

执行flushall命令,也会触发rdb规则。

save与bgsave

手动触发Redis进行RDB持久化的命令有两种:

  1. save

    该命令会阻塞当前Redis服务器,执行save命令期间,Redis不能处理其他命令,直到RDB过程完成 为止,不建议使用。

    save命令是同步命令,会占用Redis的主进程。若Redis数据非常多时,save命令会执行速度非常慢,阻塞所有客户端的请求
    
  2. bgsave (推荐)

    执行该命令时,Redis会在后台异步进行快照操作,快照同时还可以响应客户端请求。 这两个命令是在Redis客户端中执行,并不是redis.conf中修改

    命令savebgsave
    IO类型同步异步
    阻塞是(阻塞发生在fock(),通常非常快)
    复杂度O(n)O(n)
    优点不会消耗额外的内存不阻塞客户端命令
    缺点阻塞客户端命令需要fock子进程,消耗内存
stop-writes-on-bgsave-error

默认值是yes。当Redis无法写入磁盘的话,直接关闭Redis的写操作。

在这里插入图片描述

rdbcompression

默认值是yes。对于存储到磁盘中的快照,可以设置是否进行压缩存储。如果是的话,redis会采用LZF算 法进行压缩。如果你不想消耗CPU来进行压缩的话,可以设置为关闭此功能,但是存储在磁盘上的快照 会比较大。

在这里插入图片描述

rdbchecksum

默认值是yes。在存储快照后,我们还可以让redis使用CRC64算法来进行数据校验,但是这样做会增加 大约10%的性能消耗,如果希望获取到最大的性能提升,可以关闭此功能。

在这里插入图片描述

恢复数据

只需要将rdb文件放在Redis的启动目录,Redis启动时会自动加载dump.rdb并恢复数据

这篇关于Redis-持久化操作-RDB的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/989371

相关文章

Mysql数据库中数据的操作CRUD详解

《Mysql数据库中数据的操作CRUD详解》:本文主要介绍Mysql数据库中数据的操作(CRUD),详细描述对Mysql数据库中数据的操作(CRUD),包括插入、修改、删除数据,还有查询数据,包括... 目录一、插入数据(insert)1.插入数据的语法2.注意事项二、修改数据(update)1.语法2.有

Python文件操作与IO流的使用方式

《Python文件操作与IO流的使用方式》:本文主要介绍Python文件操作与IO流的使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、python文件操作基础1. 打开文件2. 关闭文件二、文件读写操作1.www.chinasem.cn 读取文件2. 写

Java实现MinIO文件上传的加解密操作

《Java实现MinIO文件上传的加解密操作》在云存储场景中,数据安全是核心需求之一,MinIO作为高性能对象存储服务,支持通过客户端加密(CSE)在数据上传前完成加密,下面我们来看看如何通过Java... 目录一、背景与需求二、技术选型与原理1. 加密方案对比2. 核心算法选择三、完整代码实现1. 加密上

Redis持久化机制之RDB与AOF的使用

《Redis持久化机制之RDB与AOF的使用》:本文主要介绍Redis持久化机制之RDB与AOF的使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Redis持久化机制-RDB与AOF一、RDB持久化机制1、RDB简介2、RDB的工作原理3、RDB的优缺点4

基于Redis实现附近商铺查询功能

《基于Redis实现附近商铺查询功能》:本文主要介绍基于Redis实现-附近商铺查询功能,这个功能将使用到Redis中的GEO这种数据结构来实现,需要的朋友可以参考下... 目录基于Redis实现-附近查询1.GEO相关命令2.使用GEO来实现以下功能3.使用Java实现简China编程单的附近商铺查询4.Red

Redis高可用-主从复制、哨兵模式与集群模式详解

《Redis高可用-主从复制、哨兵模式与集群模式详解》:本文主要介绍Redis高可用-主从复制、哨兵模式与集群模式的使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝... 目录Redis高可用-主从复制、哨兵模式与集群模式概要一、主从复制(Master-Slave Repli

Redis中RedisSearch使用及应用场景

《Redis中RedisSearch使用及应用场景》RedisSearch是一个强大的全文搜索和索引模块,可以为Redis添加高效的搜索功能,下面就来介绍一下RedisSearch使用及应用场景,感兴... 目录1. RedisSearch的基本概念2. RedisSearch的核心功能(1) 创建索引(2

Redis中HyperLogLog的使用小结

《Redis中HyperLogLog的使用小结》Redis的HyperLogLog是一种概率性数据结构,用于统计唯一元素的数量(基数),本文主要介绍了Redis中HyperLogLog的使用小结,感兴... 目录 一、HyperlogLog 是什么?️ 二、使用方法1. 添加数据2. 查询基数China编程3.

SQL常用操作精华之复制表、跨库查询、删除重复数据

《SQL常用操作精华之复制表、跨库查询、删除重复数据》:本文主要介绍SQL常用操作精华之复制表、跨库查询、删除重复数据,这些SQL操作涵盖了数据库开发中最常用的技术点,包括表操作、数据查询、数据管... 目录SQL常用操作精华总结表结构与数据操作高级查询技巧SQL常用操作精华总结表结构与数据操作复制表结

Redis中的数据一致性问题以及解决方案

《Redis中的数据一致性问题以及解决方案》:本文主要介绍Redis中的数据一致性问题以及解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、Redis 数据一致性问题的产生1. 单节点环境的一致性问题2. 网络分区和宕机3. 并发写入导致的脏数据4. 持