MST
星途 面试题库

面试题:从成本效益角度分析,Redis不同过期键删除策略对高并发读写场景的影响有哪些?

在高并发读写的Redis应用场景下,对比惰性删除、定期删除以及内存淘汰策略对系统性能、内存使用和数据一致性方面的成本效益,说明在何种情况下应优先选择哪种策略。
23.2万 热度难度
数据库Redis

知识考点

AI 面试

面试题答案

一键面试

惰性删除

  1. 系统性能
    • 读操作:每次读操作检查键是否过期,若过期则删除。这会增加读操作的时间复杂度,在高并发读时可能导致性能瓶颈。
    • 写操作:基本不受影响。
  2. 内存使用 可能会导致过期键长时间占用内存,直到被访问才删除,内存释放不及时。
  3. 数据一致性 数据一致性较好,只有当访问过期键时才会删除,保证数据在被访问前都是“有效”状态。
  4. 适用场景:适用于内存压力较小且对数据一致性要求较高的场景,如一些对实时性数据要求不高,但数据准确性很重要的系统。

定期删除

  1. 系统性能
    • 读操作:后台定期检查并删除过期键,对读操作性能影响相对较小,但如果删除操作过于频繁或耗时较长,仍可能影响读性能。
    • 写操作:同理,对写操作影响也较小。
  2. 内存使用 相比惰性删除,能更及时地释放过期键占用的内存,但如果定期检查频率过低,仍可能存在内存浪费情况。
  3. 数据一致性 数据一致性相对惰性删除稍弱,因为可能存在过期键在下次检查前仍未被删除的情况。
  4. 适用场景:适用于对内存使用较为敏感,同时对数据一致性要求不是极高的场景,如缓存一些不太重要的临时数据。

内存淘汰策略

  1. 系统性能
    • 读操作:当内存达到阈值触发淘汰策略时,可能会导致部分读请求的数据缺失,需要重新获取数据,增加读操作的额外开销。
    • 写操作:同样,写操作可能因为需要淘汰数据而增加延迟。
  2. 内存使用 能有效控制内存使用,确保Redis在内存阈值内运行,避免因内存耗尽导致系统崩溃。
  3. 数据一致性 数据一致性较差,被淘汰的数据可能是未过期的,会导致数据丢失。
  4. 适用场景:适用于对内存严格限制,且对数据一致性要求相对较低的场景,如大规模缓存场景,允许部分数据丢失或重建。

总结

  1. 优先选择策略
    • 若对数据一致性要求极高,内存压力不大,优先选择惰性删除。
    • 若对内存使用较为敏感,对数据一致性要求尚可,优先选择定期删除。
    • 若对内存严格限制,能接受一定的数据丢失,优先选择内存淘汰策略。