20年11月第4题

问题一

  • 1 a
  • 2 b
  • 3 c d
  • 4 f g
  • 5 e

问题二

  • [[Redis]] [[RDB持久化方式和AOF持久化方式对比]]
  • 为什么选择 RDB 方式 #card
    • 开发团队选择RDB方式可能是因为其在重启性能方面更优,能够在最短时间内重新建立服务,符合要求的7x24小时不间断服务需求。同时,RDB方式也相对简单,易于管理和维护

问题三

  • [[Redis]] “定期删除+惰性删除”策略 #card
    • Redis 的过期键(Expired Keys)是自动删除的,Redis 会在每个键的过期时间秒数到达时检查该键是否过期,如果是,它会自动从 Redis 中删除该键。
    • Redis 内部通过使用时间轮算法和惰性删除方法来实现过期键的删除。
    • 具体来说,过期键的定期删除策略由redis.c/activeExpireCycle函数实现,每当Redis的服务器周期性操作redis.c/serverCron函数执行时,activeExpireCycle函数就会被调用,它在规定的时间内,分多次遍历服务器中的各个数据库,从数据库的expires字典中随机检查一部分键的过期时间,并删除其中的过期键。然后,Redis 会启动一个后台线程,使用惰性删除方法来删除已过期的键。
    • 惰性删除指的是,当需要访问一个键时,Redis 判断该键是否过期,如果过期就立即删除。
  • [[Redis]] “定期删除+惰性删除”策略失效场景 #card
    • 是指”定期删除”没删除KEY,”惰性删除”也没生效。
    • 因为大量过期的key在定期删除策略下没有及时删除 + 外部在这段时间内没有要查询这个key的动作,导致无法做惰性删除,所以还占用着内存。
  • [[Redis]] 内存淘汰机制 #card
    • (1)从已设置过期时间的数据集最近最少使用的数据淘汰。LRU
    • (2)从已设置过期时间的数据集将要过期的数据淘汰。
    • (3)从已设置过期时间的数据集任意选择数据淘汰。
    • (4)从数据集最近最少使用的数据淘汰。LFU
    • (5)从数据集任意选择数据淘汰。

网络回响

作者

Ryen Xiang

发布于

2025-10-20

更新于

2026-02-17

许可协议


评论