面试官:Redis宕机了,如何恢复数据?

背景

  • 面试问题:Redis宕机后如何恢复数据。
  • 面试官意图:考察对Redis持久化策略的了解和应用。

持久化的必要性

  • Redis是内存数据库,宕机会导致数据丢失。
  • 后端数据库恢复数据存在性能瓶颈,可能影响数据库稳定性。

持久化策略概览

  • 官方支持四种持久化策略:RDB、AOF、RDB+AOF、无持久性。

RDB(Redis Database)

  • 定义:通过快照形式保存数据集。
  • 优点:恢复速度快,文件体积小。
  • 缺点:实时性不足,fork操作成本高,文件不可读。
  • 实现save命令阻塞主线程;bgsave通过子进程写入,不影响性能。
  • 配置 :通过redis.conf设置周期性快照条件。

AOF(Append Only File)

  • 定义:记录每个写操作,用于重建数据集。
  • 优点:数据丢失少,最多丢失一秒。
  • 缺点:恢复速度慢,文件可能过大。
  • 实现:先执行命令写入内存,再记录日志。
  • 配置 :通过redis.conf开启和配置。

RDB + AOF

  • 结合RDB和AOF的优点,提供更灵活的数据恢复方式。

无持久性

  • 禁用持久化,数据丢失风险高,不推荐使用。

RDB详细说明

  • 使用bgsave生成快照,利用Copy-On-Write(COW)技术保证快照完整性。
  • 快照频率根据业务需求调整,避免频繁fork阻塞主线程。

AOF详细说明

  • 提供三种写回策略:Always、Everysec、No。
  • 根据性能和可靠性需求选择合适的写回策略。

AOF日志重写

  • 减少日志文件大小,提高恢复效率。
  • 由后台进程bgrewriteaof完成,不影响主线程。

RDB和AOF混合方式

  • Redis 4.0引入,结合两者优点。
  • 减少快照频率,避免频繁fork。
  • AOF日志只记录两次快照间的操作,避免文件过大。

总结建议

  • 数据不能丢失时,推荐使用RDB和AOF混合方式。
  • 允许分钟级数据丢失,可只使用RDB。
  • 使用AOF时,优先选择Everysec配置,平衡可靠性和性能。
相关推荐
轻微的风格艾丝凡1 分钟前
嵌入式定时器计时技巧:用有符号数省略溢出判断的底层逻辑与实践
数据库·算法·dsp开发·嵌入式软件
Lonely丶墨轩34 分钟前
从登录入口窥见架构:一个企业级双Token认证系统的深度拆解
java·数据库·sql
收获不止数据库1 小时前
黄仁勋2026CES演讲复盘:旧世界,裂开了!
大数据·数据库·人工智能·职场和发展
汽车仪器仪表相关领域1 小时前
工况模拟精准检测,合规减排赋能行业 ——NHASM-1 型稳态工况法汽车排气检测系统项目实战经验分享
数据库·算法·单元测试·汽车·压力测试·可用性测试
2301_800256111 小时前
数据库设计中的 “数据依赖→设计异常→关系分解(范式)” 核心逻辑
数据库·postgresql
冰冰菜的扣jio1 小时前
Redis基础数据结构
数据结构·数据库·redis
汽车仪器仪表相关领域2 小时前
光轴精准测量,安全照明保障——NHD-8101/8000型远近光检测仪项目实战分享
数据库·人工智能·安全·压力测试·可用性测试
大爱编程♡2 小时前
Spring IoC&DI
数据库·mysql·spring
king_harry2 小时前
金仓数据库KingbaseES中WalMiner接口使用
数据库·kingbase·walminer
爱潜水的小L2 小时前
自学嵌入式day43,商城网页
数据库·oracle