首页 > 数据库 >Redis持久化⽅式有哪些?有什么区别?

Redis持久化⽅式有哪些?有什么区别?

时间:2023-11-12 21:32:43浏览次数:30  
标签:AOF 持久 哪些 bgsave Redis RDB save

Redis持久化⽅案分为RDB和AOF两种。

Redis持久化⽅式有哪些?有什么区别?_持久化

RDB

RDB持久化是把当前进程数据生成快照保存到硬盘的过程,触发RDB持久化过程分为手动触发和自动触发。

RDB⽂件是⼀个压缩的⼆进制⽂件,通过它可以还原某个时刻数据库的状态。由于RDB⽂件是保存在硬盘上的,所以即使Redis崩溃或者退出,只要RDB⽂件存在,就可以⽤它来恢复还原数据库的状态。

手动触发分别对应save和bgsave命令:

Redis持久化⽅式有哪些?有什么区别?_持久化_02

save命令:阻塞当前Redis服务器,直到RDB过程完成为止,对于内存比较大的实例会造成长时间阻塞,线上环境不建议使用。

bgsave命令:Redis进程执行fork操作创建子进程,RDB持久化过程由子进程负责,完成后自动结束。阻塞只发生在fork阶段,一般时间很短。

以下场景会自动触发RDB持久化:

使用save相关配置,如“save m n”。表示m秒内数据集存在n次修改时,自动触发bgsave。

如果从节点执行全量复制操作,主节点自动执行bgsave生成RDB文件并发送给从节点执行debug reload命令重新加载Redis时,也会自动触发save操作默认情况下执行shutdown命令时,如果没有开启AOF持久化功能则自动执行bgsave。

AOF

AOF(append only file)持久化:以独立日志的方式记录每次写命令, 重启时再重新执行AOF文件中的命令达到恢复数据的目的。AOF的主要作用是解决了数据持久化的实时性,目前已经是Redis持久化的主流方式。

AOF的工作流程操作:命令写入 (append)、文件同步(sync)、文件重写(rewrite)、重启加载 (load)

Redis持久化⽅式有哪些?有什么区别?_持久化_03

流程如下:

1)所有的写入命令会追加到aof_buf(缓冲区)中。

2)AOF缓冲区根据对应的策略向硬盘做同步操作。

3)随着AOF文件越来越大,需要定期对AOF文件进行重写,达到压缩的目的。

4)当Redis服务器重启时,可以加载AOF文件进行数据恢复。

标签:AOF,持久,哪些,bgsave,Redis,RDB,save
From: https://blog.51cto.com/u_16255459/8331062

相关文章

  • 常见面试题-Redis底层的SDS、ZipList、ListPack
    Redis的SDS了解吗?答:Redis创建了SDS(simpledynamicstring)的抽象类型作为String的默认实现SDS的结构如下:structsdshdr{//字节数组,用于保存字符串charbuf[];//buf[]中已使用字节数量,称为SDS的长度intlen;//buf[]中尚未使用的字节数量intfree;}......
  • 项目章程的作用是什么,项目可行性研究包括哪些
    项目章程的作用包括:①确定项目经理,规定项目经理的权力②正式确认项目的存在,给项目一个合法的地位③规定项目的总体目标,包括范围、时间、成本和质量等。④通过叙述启动项目的理由,把项目与执行组织的日常经营运作及战略计划等联系起来可行性研究包括:1.投资必要性论证项目投资建设的必......
  • Redis哨兵
    1.描述  哨兵(sentinel)是redis主从结构中的一个重要组件,其也是一个redis服务,不过是一个特殊的redis服务,只用来监听redis示例,不负责数据的读写。2.作用监控:会不断监控主节点和从节点是否正常运行自动故障转移:当主节点挂掉后,会进行自动转移,将其中一个从节点变为主节点,主节点变......
  • redis 类型Set增删查改效率
    Redis的Set数据类型是一种无序集合,它可以包含多个不重复的元素。以下是关于RedisSet类型的增删查改操作的效率说明:1.增加元素:添加单个元素(SADD命令)的时间复杂度是O(1),可以在常数时间内完成。批量添加多个元素(SADD命令)的时间复杂度也是O(1),因为它们一次性完成。2.删除元素:删除......
  • redis 类型Set增删查改效率
    Redis的Set数据类型是一种无序集合,它可以包含多个不重复的元素。以下是关于RedisSet类型的增删查改操作的效率说明:1.增加元素:添加单个元素(SADD命令)的时间复杂度是O(1),可以在常数时间内完成。批量添加多个元素(SADD命令)的时间复杂度也是O(1),因为它们一次性完成。2.删除元素:删除......
  • Ubuntu 20.04 安装 Redis
    https://developer.aliyun.com/article/764565步骤1:安装1.sudoaptupdate2.sudoaptinstallredis-server#检查服务状态3.sudosystemctlstatusredis-server #输出内容●redis-server.service-Advancedkey-valuestoreLoaded:loaded(/lib/systemd/system/re......
  • 本机Java连接虚拟机的redis相关
    1、代码Jedisjedis=newJedis("192.168.88.151",6379);2、开启6379端口//查看6379端口是否开启--yes是开启;no是关闭firewall-cmd--query-port=6379/tcp//开启6379端口firewall-cmd--zone=public--add-port=6379/tcp--permanent//重启使生效firewall-cmd--reloa......
  • Spring Boot 集成 Redis
    前言随着Web应用的发展和数据量的增加,数据存储方案不断更新。Redis作为一个内存NoSQL数据库随着其高效的性能和易用性,越来越受到开发者的青睐。本文笔者将介绍如何在SpringBoot中集成Redis以及如何在实际应用中使用Redis。摘要本文旨在介绍如何在SpringBoot中集成Redis,并针对......
  • scrapy解析数据,配置文件,整站爬取cnblogs,持久化
    1scrapy解析数据......
  • 虚拟机安装redis相关步骤
    1、官网下载地址--https://download.redis.io2、下载rediswgethttp://download.redis.io/releases/redis-5.0.7.tar.gz3、将文件解压缩tar-zvxfredis-5.0.7.tar.gz4、编译redis//在解压文件的目录下执行make命令cdredis-5.0.7make几个文件也都成功出现啦:......