1.概述
摘自: 《Redis深度历险 核心原理与应用实践》_钱文品.pdf
仅供自己学习,方便查找,建议看原文。
2.过期策略
Redis 所有的数据结构都可以设置过期时间,时间一到,就会被自动删除。你可以想象 Redis 内部有一个死神,他时刻盯着所有设置了过期时间的 key ,寿命一到就会立即收割。
你还可以进一步站在死神的角度思考,会不会因为同一时间太多的 key 过期,以至于忙不过来?同时因为 Redis 是单线程的,收割的时间也会占用线程的处理时间,如果收割的操作太过于繁忙,会不会导致线上读写指令出现卡顿?
这些问题 Antirez 早就想到了,所以在过期问题上, Redis 非常小心。
2.1 过期的 key 集合
Redis 会将每个设置了过期时间的 key 放入一个独立的字典中,以后会定时遍历这个字典来删除到期的 key 。除了定时遍历之外,它还会使用惰性策略来删除过期的key 。所谓惰性策略就是在客户端访问这个 key 的时候&#x