2.redis-持久化

文章介绍了Redis的两种持久化方法:RDB(通过save和bgsave指令创建数据快照)和AOF(记录数据操作日志)。RDB适合全量备份,恢复速度快但可能存在数据丢失风险;AOF则提供实时持久化,记录每次写操作,可配置不同的同步策略。AOF重写用于优化磁盘占用,可通过手动或自动触发。
摘要由CSDN通过智能技术生成

01-Redis持久化

  • 概述

    • hbs4w6huj5hw4uhu
    • Redis数据存储在缓存中,为了防止数据的意外丢失,确保数据安全性。所以,就有了redis持久化。
  • 分类

    • r6t7jy8kiwbh4r5t6

    • RDB: Redis默认的持久化策略, 直接存储数据

    • AOF: 存储数据的操作过程.

02-RDB持久化之save指令

  • 配置说明

    # 设置rdb文件名
    dbfilename "dump.rdb"
    # 设置rdb文件存储路径
    dir /usr/local/redis/data
    # 设置存储rdb时是否压缩数据
    rdbcompression no
    # 设置读写文件过程是否进行RDB格式校验
    rdbchecksum no
    
  • 开发步骤

    • ①修改redis.conf
      • 添加RDB配置
    • ②重启redis服务器
    • ③执行save指令
  • ①修改redis.conf

    port 6379
    daemonize no
    # logfile "log-6379.log"
    maxclients 50
    timeout 0
    loglevel debug
    
    # RDB设置
    # 1.设置rdb文件名
    dbfilename "dump-6379.rdb"
    
    # 2.设置rdb文件存储路径
    dir /usr/local/redis/data
    
    # 3.设置存储rdb时是否压缩数据
    rdbcompression no
    
    # 4.设置读写文件过程是否进行RDB格式校验
    rdbchecksum no
    
  • ②重启redis服务器

  • ③执行save指令

    • ag5ygwh43y4huw

    • ag3u4hw6uy43hsbahb

03-save指令执行流程

  • 执行流程

    • h4ebj53y47hbaw4hw
  • 存在的问题

    • redis是单线程任务执行序列,如果在某个执行节点有大量的数据需要进行save操作,那么后续的任务 就会阻塞。

04-RDB持久化之bgsave指令

  • 配置说明

    # 后台存储过程中如果出现错误现象,是否停止保存操作
    stop-writes-on-bgsave-error yes
    
  • 开发步骤

    • ①修改redis.conf
      • 添加bgsave配置
    • ②重启redis服务器
    • ③执行bgsave指令
  • ①修改redis.conf

    port 6379
    daemonize no
    # logfile "log-6379.log"
    maxclients 50
    timeout 0
    loglevel debug
    
    # RDB设置
    # 1.设置rdb文件名
    dbfilename "dump-6379.rdb"
    
    # 2.设置rdb文件存储路径
    dir /usr/local/redis/data
    
    # 3.设置存储rdb时是否压缩数据
    rdbcompression no
    
    # 4.设置读写文件过程是否进行RDB格式校验
    rdbchecksum no
    
    # 5.后台存储过程中如果出现错误现象,是否停止保存操作
    stop-writes-on-bgsave-error yes
    
  • ②重启redis服务器

  • ③执行bgsave指令

    • j64knreq2w4hb6j35nw
    • shr5buji573e3yuqwha5a4u

05-bgsave指令执行流程

  • 执行流程

    • gh3qaew5uj4wh356y1q3
  • 存在的问题

    • 不管是save指令还是bgsave指令都需要开发人员手动执行.

06-RDB持久化之save配置文件

  • 概述

    • 开发过程中,最好是一定时间范围内,或者数据量达到一定水平,就可以自动执行bgsave指令,那么 就可以使用到save配置
  • 配置说明

    #每隔second秒执行检测,如果有count个key发生改变,就自动RDB持久化
    save seconds count
    
  • 开发步骤

    • ①修改redis.conf
      • 添加自动bgsave配置
    • ②重启redis服务器
    • ③指令演示
  • ①修改redis.conf

    port 6379
    daemonize no
    # logfile "log-6379.log"
    maxclients 50
    timeout 0
    loglevel debug
    
    # RDB设置
    # 1.设置rdb文件名
    dbfilename "dump-6379.rdb"
    
    # 2.设置rdb文件存储路径
    dir /usr/local/redis/data
    
    # 3.设置存储rdb时是否压缩数据
    rdbcompression no
    
    # 4.设置读写文件过程是否进行RDB格式校验
    rdbchecksum no
    
    # 5.后台存储过程中如果出现错误现象,是否停止保存操作
    stop-writes-on-bgsave-error yes
    
    # 6.每隔10秒检测一次,有2个数据变化就执行bgsave指令
    save 10 2
    
  • ②重启redis服务器

  • ③指令演示

    • h4weu364whja3gqwhrdvy5
    • gajw345e3q2y5g6t34

07-RDB三种方案对比

  • 三种方案对比
    • garhujw46eq3t62y45
  • 优点
    • RDB内部存储的是redis在某个时间点的数据快照,非常适合用于数据备份,全量复制等场景
    • RDB恢复数据的速度要比AOF快很多
  • 缺点
    • 每次全量备份, 数据量大, 中间如果出现问题, 导致持久化失败;
    • 每次读写都是全部数据,当数据量巨大时,效率非常低;
    • 需要开启子进程, 耗费服务性能
  • 解决方案
    • ①备份数据的操作过程的指令;
    • ②使用部分复制.

08-AOF概述

  • 概述
    • AOF(append only file),以独立日志的方式记录每次写命令,重启时再重新执行AOF文件中命令 达 到恢复数据的目的
    • 与RDB相比可以简单理解为由记录数据改为记录数据产生的变化
    • AOF的主要作用是解决了数据持久化的实时性,目前已经是Redis持久化的主流方式
    • 与RDB同时使用,优先使用AOF进行持久化
  • 策略
    • always: 每次写操作都执行aof持久化
    • everysec: 默认值, 每隔一秒执行aof持久化
    • no: 不做aof持久化

09-AOF配置及使用

  • 配置说明

    # 开启aof持久化功能
    appendonly yes
    # 设置aof文件名
    appendfilename 'appendonly-6379.aof'
    # 设置aof文件存储路径
    dir /usr/local/redis/data
    # 设置aof策略
    appendfsync everysec
    
  • 开发步骤

    • ①修改redis.conf
    • ②重启redis服务器
    • ③代码演示
  • ①修改redis.conf

    port 6379
    daemonize no
    # logfile "log-6379.log"
    maxclients 50
    timeout 0
    loglevel debug
    
    # RDB设置
    # 1.设置rdb文件名
    dbfilename "dump-6379.rdb"
    
    # 2.设置rdb文件存储路径
    dir /usr/local/redis/data
    
    # 3.设置存储rdb时是否压缩数据
    rdbcompression no
    
    # 4.设置读写文件过程是否进行RDB格式校验
    rdbchecksum no
    
    # 5.后台存储过程中如果出现错误现象,是否停止保存操作
    stop-writes-on-bgsave-error yes
    
    # 6.每隔10秒检测一次,有2个数据变化就执行bgsave指令
    save 10 2
    
    # AOF设置
    # 1.开启aof持久化功能
    appendonly yes
    # 2.设置aof文件名
    appendfilename 'appendonly-6379.aof'
    # 4.设置aof策略
    appendfsync everysec
    
  • ②重启redis服务器

  • ③代码演示

    • h4weu364whja3gqwhrdvy5

    • g3yqaew4yuw35h

10-AOF执行流程

  • ①always
    • agbheu4hwq236y574r
  • ②everysec
    • ga3huwa34jnseag

11-AOF重写概述

  • 概述

    • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4ke1bL3D-1681709019240)(null)]

    • 只记录结果的指令.

  • 好处

    • 降低磁盘占用量,提高磁盘利用率
    • 提高持久化效率,降低持久化写时间,提高IO性能
    • 降低数据恢复用时,提高数据恢复效率

12-AOF手动重写

  • 概述
    • 由开发人员手动输入bgrewriteaof触发AOF重写
  • 代码实现
    • ga3uwh4t2qe46y73
  • 效果如下
    • farhu4wik78uq34r
  • 存在的问题
    • 需要开发人员手动输入指令完成AOF重写.

13-AOF自动重写

  • 参数说明

    # aof文件大小阈值,默认是1MB
    auto-aof-rewrite-min-size size
    
    # 比之前的aof文件大小增加了percent百分比,默认是100%
    auto-aof-rewrite-percentage percent
    
    # aof文件现在的大小
    aof_current_size
    
    # aof文件之前的大小
    aof_base_size
    
  • 触发条件

    # aof当前文件大小 大于 文件阈值
    aof_current_size > auto-aof-rewrite-min-size
    
    # aof文件大小增量 大于 百分比
    aof_current_size-aof_base_size / aof_base_size ≥ auto-aof-rewrite-percentage
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小钱要努力

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值