MST

星途 面试题库

面试题:Redis过期键删除策略中有哪些主要方法,简述故障恢复机制与这些方法的关系

请详细阐述Redis过期键删除策略中的定时删除、惰性删除和定期删除方法,并说明在发生故障后,故障恢复机制是如何与这些删除策略相互作用,以确保数据一致性和系统正常运行的。
28.3万 热度难度
数据库Redis

知识考点

AI 面试

面试题答案

一键面试

定时删除

  • 原理:在设置键的过期时间时,同时创建一个定时器,当过期时间到达时,由定时器立即执行对该键的删除操作。
  • 优点:能及时释放过期键占用的内存,对内存友好,保证内存不会因为大量过期键而持续膨胀。
  • 缺点:创建和管理定时器有额外的CPU开销,尤其是在大量键同时过期的情况下,会给CPU带来较大压力,影响系统整体性能。

惰性删除

  • 原理:键过期时不会立即删除,而是在每次访问该键时,检查该键是否过期,如果过期则删除,并返回相应错误信息(如nil)。
  • 优点:对CPU友好,只有在访问键时才进行过期检查和删除操作,不会集中消耗CPU资源处理过期键。
  • 缺点:如果过期键长时间未被访问,会一直占用内存,导致内存不能及时释放,可能引发内存泄漏问题。

定期删除

  • 原理:Redis会定期(如每100毫秒)随机抽取一些设置了过期时间的键进行检查,删除其中过期的键。抽取的键数量和检查频率可通过配置参数调整。
  • 优点:是一种折中的方案,兼顾了内存和CPU性能。既不会像定时删除那样大量消耗CPU,也不会像惰性删除那样长时间占用内存。
  • 缺点:若抽取的键中过期键比例较高,可能导致一次定期删除操作执行时间较长,影响系统短暂性能;另外,若抽取的键中过期键过少,又不能很好地释放内存。

故障恢复机制与删除策略的相互作用

  1. 持久化方式与故障恢复:Redis有RDB和AOF两种持久化方式。RDB是定期将内存数据快照保存到磁盘,AOF是将写命令追加到日志文件。当发生故障重启时,RDB会根据最后一次快照文件恢复数据,AOF则会重放日志文件中的命令来恢复数据。
  2. 与定时删除的相互作用:定时删除在故障恢复后,原有的定时器信息不会保留。重启后,对于设置了过期时间的键,会按照重启后的删除策略(通常为惰性删除 + 定期删除)进行处理。由于重启前定时删除已删除的键不会出现在持久化文件中,所以不会影响数据一致性。
  3. 与惰性删除的相互作用:故障恢复后,惰性删除机制不受影响,仍然在每次访问键时检查是否过期并删除。因为持久化文件中记录的是故障前的数据状态,重启后首次访问过期键时,惰性删除会将其删除,保证数据一致性。
  4. 与定期删除的相互作用:重启后,定期删除机制会按照配置继续定期检查和删除过期键。对于故障前未删除的过期键,通过定期删除在后续操作中逐步清理,确保内存的合理使用和数据一致性。在AOF重写过程中,也会对过期键进行处理,不会将已过期的键重写到新的AOF文件中,进一步保证了数据一致性。