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

发布于

2026-01-31

更新于

2025-10-20

许可协议


网络回响

评论