MST

星途 面试题库

面试题:Redis过期键删除策略的基本类型及特点

请阐述Redis中过期键删除策略有哪些基本类型,并且说明每种类型在实际应用中的特点和可能存在的问题。
50.0万 热度难度
数据库Redis

知识考点

AI 面试

面试题答案

一键面试

过期键删除策略基本类型

  1. 定时删除:在设置键的过期时间时,同时创建一个定时器,当过期时间到达时,由定时器立即执行对键的删除操作。
  2. 惰性删除:键过期了也不会立即删除,每次从键空间中获取键时,都检查取得的键是否过期,如果过期,则删除该键,返回空。
  3. 定期删除:每隔一段时间,程序就对数据库进行一次检查,删除里面的过期键。至于要删除多少过期键,以及要检查多少个数据库,则由算法决定。

每种类型在实际应用中的特点和可能存在的问题

  1. 定时删除
    • 特点
      • 内存释放及时,能保证过期键能在过期时立即被删除,不会长期占用内存,能最大限度地减少过期键对内存的无效占用。
      • 对内存友好,不会造成内存浪费,特别适用于对内存使用非常敏感的场景,比如内存资源紧张的嵌入式设备等。
    • 可能存在的问题
      • 对CPU不友好,因为要为每个键设置定时器,当过期键数量很多时,创建和管理定时器会消耗大量的CPU资源,会影响Redis的性能和响应时间。
      • 定时器的创建和销毁需要额外的系统开销,增加了系统的负担。
  2. 惰性删除
    • 特点
      • 对CPU友好,只有在访问键时才会检查键是否过期并进行删除操作,不会主动消耗CPU资源去扫描过期键,减少了CPU的额外开销,能保证Redis的高性能。
      • 实现简单,不需要额外的定时器或周期性任务,只需要在获取键的逻辑中添加过期检查即可。
    • 可能存在的问题
      • 对内存不友好,过期键可能长时间占用内存,直到被访问时才会被删除。如果大量过期键长时间未被访问,会导致内存浪费,甚至可能引发内存不足的问题。
      • 可能会影响数据一致性,因为在过期键未被访问删除期间,它仍然存在于数据库中,可能会对依赖数据一致性的业务产生影响。
  3. 定期删除
    • 特点
      • 是一种折中的方案,在一定程度上兼顾了CPU和内存的性能。通过定期扫描数据库,删除部分过期键,可以避免大量过期键长时间占用内存,同时又不会像定时删除那样消耗过多的CPU资源。
      • 可以通过调整扫描的频率和每次扫描的键数量,来平衡CPU和内存的使用,灵活性较高。
    • 可能存在的问题
      • 扫描频率和扫描键数量较难把握,如果扫描频率过高或每次扫描键数量过多,会消耗过多CPU资源,影响Redis性能;如果扫描频率过低或每次扫描键数量过少,又可能导致大量过期键长时间无法被删除,浪费内存。
      • 由于只是定期扫描部分数据库,可能存在部分过期键在两次扫描之间长时间占用内存的情况,对内存的释放不够及时。