Redis 持久化配置,RDB和AOF方式配置说明

文章目录

    • 一、概述
    • 二、RDB 持久化方式配置
    • 三、AOF 持久化方式配置

如果您对Redis的了解不够深入请关注本栏目,本栏目包括Redis安装,Redis配置文件说明,Redis命令和数据类型说明。

一、概述

  • Redis 持久化是指将 Redis 数据存储到磁盘上,以便在 Redis 服务器重启后能够恢复数据的过程。Redis 提供了两种主要的持久化方式:

  • RDB 持久化(Redis Database)

    • RDB 持久化是将 Redis 数据以快照的形式保存到磁盘上的二进制文件。
    • RDB 文件是 Redis 在某个时间点上的数据快照,包含了所有数据的状态。
    • RDB 持久化适用于需要在特定时间点上备份数据或进行全量恢复的场景。
    • RDB 持久化使用 SAVE 或 BGSAVE 命令手动触发,也可以通过配置自动定期触发(查看Redis命令使用)。
  • AOF 持久化(Append-Only File)

    • AOF 持久化是将 Redis 的写操作以日志追加的方式记录到磁盘上的文件中。
    • AOF 文件是一个文本文件,记录了所有写操作的命令和参数
    • 通过重新执行 AOF 文件中的命令,可以还原出 Redis 数据的状态。
    • AOF 持久化适用于需要实时记录数据变更并保证最大数据安全性的场景。
    • AOF 持久化可以通过配置的方式实时记录命令,或者按一定的策略进行重写(AOF Rewrite)来压缩文件大小。
  • Redis 还提供了混合持久化的方式,即同时使用 RDB 持久化和 AOF 持久化。这种方式可以兼顾快速恢复和数据安全性。

  • Redis 还支持无持久化的模式,也就是不将数据持久化到磁盘,只保留在内存中。这种模式适用于对数据持久化要求不高或者仅用于缓存的场景。

在这里插入图片描述

二、RDB 持久化方式配置

  • 持久化原理

    • RDB持久化是Redis的一种快照持久化方式,它通过将内存中的数据快照写入磁盘文件,以便在需要时可以从磁盘文件还原数据
    • 优点是性能较高、恢复速度快、进行了数据压缩。
    • 缺点是实时性差,毕竟每次快照都有一定时间间隔。
  • 配置基本语法:save <seconds> <changes>

    • <seconds> 表示间隔多久触发一次
    • <chages> 表示变化数达到多少触发一次
    • 两个条件必须同时满足才会触发RDB持久化
  • 打开RDB持久化

    • 在 redis.conf 配置文件中添加类似如下配置,即可打开Redis的RDB持久化,有关Redis更多配置请看这。
    # 这里表示当时间超过900秒且至少有1个key变化时触发RDB持久化
    save 900 1
    # 这里表示当时间超过300秒且至少有10个key变化时触发RDB持久化
    save 300 10
    # 这里表示当时间超过60秒且至少有10000个key变化时触发RDB持久化
    save 60 10000
    
  • 关闭RDB持久化

    • 将save设置为空值,或者直接删除save配置,如下:
    save ""	
    
  • 持久化其他配置

    • 这些配置也很关键,要准确配置
    • 持久文件目录如果不存在需手动创建
    # RDB 持久化文件名
    dbfilename dum.rdb
    # 持久化文件目录
    dir  /var/lib/redis/6379# 是否开启压缩
    rdbcompression yes
    # RDB文件校验位
    rdbchecksum yes
    
  • 检查RDB文件内容

    redis-check-rdb  dump.rdb
    

    [root@yiqifu-redis 6379]# redis-check-rdb dump.rdb
    [offset 0] Checking RDB file dump.rdb
    [offset 26] AUX FIELD redis-ver = ‘6.0.6’
    [offset 40] AUX FIELD redis-bits = ‘64’
    [offset 52] AUX FIELD ctime = ‘1697161255’
    [offset 67] AUX FIELD used-mem = ‘865296’
    [offset 83] AUX FIELD aof-preamble = ‘0’
    [offset 85] Selecting DB ID 0
    [offset 125] Checksum OK
    [offset 125] \o/ RDB looks OK! \o/
    [info] 3 keys read
    [info] 0 expires
    [info] 0 already expired

三、AOF 持久化方式配置

  • 持久化原理

    • 以追加(append)的方式将写操作追加到一个日志文件中,记录了Redis服务器接收的所有写命令,以便在需要时恢复数据。
    • 优点是实时性高,因为他是实时记录所有命令。
    • 缺点时实时记录会占用大量的空间,单纯的AOF恢复速度慢。所以一般与RDB结合使用。
  • 持久化配置

    • AOF持久化配置使用 appendonly ,当值为 yes 时开启AOF持久化,当值为 no 时关闭AOF持久化。
  • 打开AOF持久化(默认是关闭的)

    • 在 redis.conf 配置文件中添加类似如下配置,即可打开Redis的AOF持久化,有关Redis更多配置请看这。
    appendonly yes
    
  • 关闭AOF持久化

    appendonly no
    
  • 持久化其他配置

    • 这些配置也很关键,要准确配置
    • 持久文件目录如果不存在需手动创建
    # AOF 持久化文件名
    appendfilename "appendonly.aof"
    # 持久化文件目录
    dir  /var/lib/redis/6379# AOF 持久化级别(写入磁盘的速度)
    # 可配置为 alway=始终,everysec=每秒,no=根据系统缓冲区大小(4k)满flush决定。
    appendfsync everysec
    # 当在执行RDB持久化时,是否继续执行AOF持久化,默认是不执行
    no-appendfsync-on-rewrite no
    # 是否开启AOF和RDB混合模式
    aof-use-rdb-preamble yes# AOF 持久化自动重写触发条件配置,重写会对AOF文件进行压缩,如果开启混合模式会加入RDB方案。
    # 后续每次触发重写的条件是前一次触发重写后,再超过100%时触发重写
    auto-aof-rewrite-percentage 100
    # 开机后当aof文件达到64MB时会触发重写
    auto-aof-rewrite-min-size 64mb
  • 检查AOF文件内容

redis-check-aof appendonly.aof

[root@yiqifu-redis 6379]# redis-check-aof appendonly.aof
AOF analyzed: size=120, ok_up_to=120, diff=0
AOF is valid

  • AOF 持久化旧版文件内容解析(没有压缩之前通过 cat appendonly.aof 命令可以查看)

    • *数字:表示当前命令要取几行。如*表示取2行,*3表示取3行。
    • $数字:表示接下要取多个少字节。如$6表示取6个字节,$3表示取3个字节。
    • 安装*n和$n取出来就一条完整的命令。
    *2
    $6
    SELECT
    $1
    0
    *3
    $3
    set
    $3
    aaa
    $3
    111
    *3
    $3
    set
    $3
    bbb
    $3
    222
    

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/151945.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

maven之父子工程版本控制案例实战,及拓展groupId和artifactId的含义

<parent>标签 用于父子工程项目&#xff0c;什么是父子工程&#xff1f; 顾名思义&#xff0c;maven父子项目是一个有一个父项目&#xff0c;父项目下面又有很多子项目的maven工程&#xff0c;当然&#xff0c;子项目下面还可以添加子项目&#xff0c;从而形成一个树形…

公网远程访问macOS本地web服务器

# 公网访问macOS本地web服务器【内网穿透】 文章目录 1. 启动Apache服务器2. 公网访问本地web服务2.1 本地安装配置cpolar2.2 创建隧道2.3 测试访问公网地址3. 配置固定二级子域名3.1 保留一个二级子域名3.2 配置二级子域名4. 测试访问公网固定二级子域名 以macOS自带的Apache…

原型制作的软件 Experience Design mac( XD ) 中文版软件特色

​XD是一个直观、功能强大的UI/UX开发工具&#xff0c;旨在设计、原型、用户之间共享材料以及通过数字技术进行设计交互。Adobe XD提供了开发网站、应用程序、语音界面、游戏界面、电子邮件模板等所需的一切。xd mac软件特色 体验设计的未来。 使用 Adobe XD 中快速直观、即取即…

leetCode 229. 多数元素 II + 摩尔投票法 + 进阶 + 优化空间

229. 多数元素 II - 力扣&#xff08;LeetCode&#xff09; 给定一个大小为 n 的整数数组&#xff0c;找出其中所有出现超过 ⌊ n/3 ⌋ 次的元素。 进阶&#xff1a;尝试设计时间复杂度为 O(n)、空间复杂度为 O(1)的算法解决此问题。 &#xff08;1&#xff09;哈希表 class …

JavaScript对象与原型

目录 对象的创建 原型与原型链 原型继承 总结 在JavaScript中&#xff0c;对象是非常重要的概念之一。它们允许我们以一种结构化的方式存储和组织数据&#xff0c;并提供了一种方便的方式来操作和访问这些数据。而对象的行为和属性则通过原型来定义。 对象的创建 在JavaS…

在Mac上安装MongoDB 5.0

MongoDB 5.0安装 1、环境描述 操作系统&#xff1a;macOS 14.0 (23A344) 2、安装MongoDB 2.1、tar解压包安装 下载地址&#xff1a;Download MongoDB Community Server | MongoDB 创建一个目录&#xff0c;以便数据库将文件放入其中。&#xff08;默认情况下&#xff0c;数据…

Spring Boot进阶(93):体验式教程:手把手教你整合Spring Boot和Zipkin

&#x1f4e3;前言 分布式系统开发中&#xff0c;服务治理是一个比较重要的问题。为了更好地实现服务治理&#xff0c;需要解决服务跟踪问题&#xff0c;即如何对分布式系统中的服务进行监控和追踪。本文将介绍如何使用Zipkin进行服务跟踪&#xff0c;并结合Spring Boot进行整合…

docker - win10 家庭版 开始虚拟化

文章目录 前言docker - win10 家庭版 开始虚拟化 前言 如果您觉得有用的话&#xff0c;记得给博主点个赞&#xff0c;评论&#xff0c;收藏一键三连啊&#xff0c;写作不易啊^ _ ^。   而且听说点赞的人每天的运气都不会太差&#xff0c;实在白嫖的话&#xff0c;那欢迎常来啊…

Servlet 与Spring对比!

前言&#xff1a; Spring相关的框架知识&#xff0c;算是目前公司在用的前沿知识了&#xff0c;很重要&#xff01;&#xff01; 那么以Spring为基础的框架有几个&#xff1f; 以Spring为基础的框架包括若干模块&#xff0c;其中主要的有Spring Framework、Spring Boot、Spring…

mysql数据库和sql语句

数据库概念 数据&#xff1a;数字信息 据&#xff1a;对一系列对象具体属性的描述的集合 数据库&#xff1a;数据库就是用来组织&#xff08;各个数据之间有联系&#xff0c;是按照改规则组织起来的&#xff09;&#xff0c;存储和管理&#xff08;对数据库的增删改查&#xf…

从工厂到社会:探索如何应用设计模式工厂模式

文章目录 &#x1f31f; 将设计模式工厂模式运用到社会当中&#x1f34a; 工厂模式在社会中的应用&#x1f389; 工厂&#x1f389; 餐厅&#x1f389; 运输 &#x1f34a; 工厂模式的优势&#x1f389; 代码简洁&#x1f389; 扩展性强&#x1f389; 便于维护和管理 &#x1f…

APP自动化测试 ---- Appium介绍及运行原理

在面试APP自动化时&#xff0c;有的面试官可能会问Appium的运行原理&#xff0c;以下介绍Appium运行原理。 一、Appium介绍 1.Appium概念 Appium是一个开源测试自动化框架&#xff0c;可用于原生&#xff0c;混合和移动Web应用程序测试。它使用WebDriver协议驱动IOS&#xf…