当前位置: 首页 > article >正文

Redis持久化模式RDB与AOF

RDB持久化

        RDB也被叫做Redis数据快照。简单来说就是把内存中的所有数据记录到磁盘中。当Redis实例故障重启后重磁盘中读取快照文件进行数据恢复(快照文件默认保存在当前运行目录);

演示Redis正常停机自动执行一次RDB操作

配置Redis触发RDB机制

RDB其它配置也可在redis.conf中设置

是否对RDB文件进行压缩

建议不开启,压缩RDB会消耗CPU资源相较于磁盘来比CPU资源更宝贵

修改RDB文件名

前面正常关闭Redis会自动去执行一次RDB操作,生成的文件名为dump.rdb,我们可在此对生成rdb文件的名称进行修改

可在此修改生成rdb的文件名

修改文件保存路径

如上生成的rdb文件默认保存在Redis根目录中,可修改此处路径更改rdb/aof文件的保存路径。后续Redis宕机或重启时Redis会读取此路径和上面配置好的rdb/aof文件名去恢复数据;

说明:

       xxx.rdb或xxx.aof文件都会存放在此配置的目录中;

RDB总结

        RDB的save和bgsave区别?

save和bgsave都是Redis用来生成rdb文件的命令。区别在于save命令是Redis主线程去执行生成/保存RDB文件等一系列操作,因为Redis是单线程的所以在使用save命令生成RDB文件期间Redis是不会处理其它客户的任何请求;bgsave命令是fork的Redis主进程得到一个新的子进程去做RDB的生成/保存操作(bgsave的fork主进程生成子进程的操作会短暂阻塞)但后续最耗时的操作 RDB生成/保存操作都是由子进程去处理的不会阻塞主进程处理其它客户端请求。

特别说明

        1.Redis正常退出执行的RDB使用的是save命令;

        2.Redis.conf中配置的RDB触发机制使用的是bgsave命令;

RDB方式bgsave基本流程

1.fork主进程得到一个子进程,共享主进程内存空间;

2.子进程读取内存数据并写入新的RDB文件;

3.用新的RDB文件替换旧的RDB文件;

RDB会在什么时候执行?save 60 1000代表什么含义?

RDB什么时候执行及save 60 1000含义

1.正常停止Redis服务时自动执行一次RDB;

2.触发了在redis.conf中配置的RDB触发机制时会执行,如save 600 1000即600秒内至少执行了1000次修改操作时会执行一次RDB;

RDB缺点

1.RDB执行间隔时间长,容易造成数据丢失;

        以配置save 600 1000为例:

                即600秒内至少发生1000次修改操作时触发RDB。假如程序执行到500秒时执行了

                999次写入操作差一次写入操作就执行RDB,若此时Redis服务器宕机。则前面999

                次修改操作都会丢失;

2.fork主进程、压缩、写出RDB文件都比较耗时;

AOF持久化

        AOF全称为Append Only File(追加文件),Redis处理的每一个写命令都会记录在AOF文件中,AOF可以看做是命令日志文件(AOF默认是关闭的);

修改配置文件开启AOF

编辑reids.conf文件开启AOF 及修改AOF文件名称

修改AOF记录频率

always:

        每执行一次写命令,立即记录到AOF文件;

everysec:

        写命令执行完先放入AOF缓冲区,然后每隔1秒将缓冲区中的数据写入到AOF文件中去

        (推荐使用,最多丢失1秒的数据);

no:

        写命令执行完先放入AOF缓冲区,由操作系统决定何时将缓冲区中的数据写到AOF文件;

查看AOF是否生效

1.开启AOF模式

2.启动Reids服务端

3.写入测试数据

4.Ctrl + C关闭Redis服务端

5.观察生成的AOF文件

        5.1.生成的AOF文件

        5.2.AOF文件记录的Redis命令

5.启动Redis服务端

bgrewriteaof命令

        AOF因为记录的是Redis的命令,AOF文件一般要比RDB大得多,而且AOF会记录对同一个Key的多次写操作,对同一个Key的多次写操作只有最后一次才是有意义的。可以通过执行bgrewriteaof命令让AOF文件执行重写功能减小AOF文件体积(类似于执行重写后会去掉AOF文件中那些无意义的命令)

配置AOF文件重写阈值

在redis.conf文件中配置AOF文件重写阈值

配置项

        # AOF文件比上次文件 增长超过多少百分比时触发重写;

        auto-aof-rewrite-percentage 100

        # AOF文件至少多大以上才出发重写;

        auto-aof-rewrite-min-size 64mb

说明

        如上两个配置项是并且的关系,即AOF至少超过64mb 且 AOF文件比上次文件增长超过

        100%时触发重写;

RDB与AOF对比

其它补充

        若同时配置了RDB和AOF,Redis优先重AOF中读取并恢复Redis数据,因为AOF的数据完整性更高;

有了AOF配置每秒刷盘(最多丢失1秒的数据)还有必要配置RDB吗?

         如果追求数据的极致安全就有必要,此时配置的RDB就充当一个备份的作用,把数据备份到磁盘或者拷贝一份RDB数据放在别的机器或机房去(因为RDB比AOF文件体积要小恢复速度更快更适合做异地备份),起到一个异地容灾的作用;

http://www.lryc.cn/news/2401823.html

相关文章:

  • 【JS进阶】ES5 实现继承的几种方式
  • 【数据结构】树形结构--二叉树(二)
  • JavaScript性能优化实战:深入探讨JavaScript性能瓶颈与优化技巧
  • 在 CentOS 上将 Ansible 项目推送到 GitHub 的完整指南
  • 深度学习题目1
  • Spring @Scheduled vs XXL-JOB vs DolphinScheduler vs Airflow:任务调度框架全景对比
  • 【Oracle】锁
  • 共识算法Raft系列(1)——什么是Raft?
  • JS逆向爬虫教程与实战技巧
  • Neovim - LSP 底层原理,难点配置(二)
  • 【Redis】Redis 的常见客户端汇总
  • 关于akka官方quickstart示例程序(scala)的记录
  • 2025年渗透测试面试题总结-腾讯[实习]玄武实验室-安全工程师(题目+回答)
  • 网站首页菜单两种布局vue+elementui顶部和左侧栏导航
  • AWS之迁移与传输服务
  • @Builder的用法
  • Unity3D 逻辑代码性能优化策略
  • 【Python Cookbook】文件与 IO(二)
  • vue实现点击按钮input保持聚焦状态
  • [蓝桥杯]取球博弈
  • Spring Security入门:创建第一个安全REST端点项目
  • [Java 基础]数组
  • fastadmin fildList 动态下拉框默认选中
  • java学习笔记——数组和二维数组
  • ‘pnpm‘ 不是内部或外部命令,也不是可运行的程序
  • Android Test2 获取系统android id
  • webpack打包学习
  • 基于Java(Jsp+servelet+Javabean)+MySQL实现图书管理系统
  • 服务器CPU被WMI Provider Host系统进程占用过高,导致系统偶尔卡顿的排查处理方案
  • JavaSwing之--JMenuBar