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

Java面试题:Redis持久化问题

Redis持久化问题

RDB (Redis Database Backup File)

Redis数据快照

将内存中的所有数据都记录到磁盘中做快照

当Redis实例故障重启时,从磁盘读取快照文件恢复数据

使用

save/bgsave

命令进行手动快照

save使用主进程执行RDB,对所有命令都进行阻塞

bgsave使用子进程执行RDB不会阻塞

在配置文件中可以设置触发RDB的机制

以save [时间] [修改key次数] 的格式设置

RDB的执行原理

Redis主进程在虚拟内存中生成记录虚拟地址和物理地址映射关系的页表

bgsave开始时fork主进程得到子进程,子进程复制了主进程的页表数据

子进程根据页表的映射对内存数据写入RDB文件

fork底层使用copy-on-write技术

每次写数据时先拷贝一份数据,读数据时从拷贝数据中读取,避免脏数据

AOF(Append Only File)

记录Redis处理的每一个写命令(命令日志文件)

通过修改配置文件

appendonly yes

开启AOF

同时可以通过配置文件来修改AOF记录的频率

分为

always/everysec(默认)/no

请添加图片描述

AOF文件会远大于RDB文件,因为是记录命令而且会记录对同一个key的多次写操作

我们可以执行bgrewrite命令来让AOF执行重写功能来只记录最后一次写操作

可以在配置文件中对触发阈值进行配置

auto-aof-rewrite-percentage 100//根据增长百分比进行触发auto-aof-rewrite-min-size 64mb//根据设置文件大小上限进行触发

RDB和AOF的对比

请添加图片描述

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

相关文章:

  • 【Java】解决Java报错:ClassCastException
  • OpenCV-最小外接圆cv::minEnclosingCircle
  • 大小堆运用巧解数据流的中位数
  • AI能力边界不断扩展,将对国家安全产生深远影响
  • 【UnityShader入门精要学习笔记】第十六章 Unity中的渲染优化技术 (上)
  • GPT-4o:免费且更快的模型
  • docker部署fastdfs
  • 【劲舞团game】
  • Day15—图像爬虫与简单处理
  • Rust基础学习-Rust中的文件操作
  • Activator.CreateInstance 与 Type.InvokeMember的区别
  • Java18+​App端采用uniapp+开发工具 idea hbuilder智能上门家政系统源码,一站式家政服务平台开发家政服务
  • 【MySQL】探索 MySQL 的 GROUP_CONCAT 函数
  • SpringBoot整合RabbitMQ (持续更新中)
  • 瑞鑫RK3588 画中画 OSD 效果展示
  • 【全开源】防伪溯源一体化管理系统源码(FastAdmin+ThinkPHP+Uniapp)
  • 自然语言处理:第三十三章FILCO:过滤内容的RAG
  • js:flex弹性布局
  • Pytorch常用函数用法归纳:创建tensor张量
  • WPF前端:一个纯Xaml的水平导航栏
  • 谷粒商城实战(033 业务-秒杀功能4-高并发问题解决方案sentinel 1)
  • STM32项目分享:智能家居(机智云)系统
  • 游戏盾之应用加速,何为应用加速
  • Java 基础面试题
  • Nginx 1.26.0 爆 HTTP/3 QUIC 漏洞,建议升级更新到 1.27.0
  • uniadmin引入iconfont报错
  • Vue3【三】 使用TS自己编写APP组件
  • 数字IC后端物理验证PV | TSMC 12nm Calibre Base Layer DRC案例解析
  • Echarts 在指定部分做文字标记
  • 如何发布自己的npm插件包