文章参考:《Redis 设计与实现》黄建宏
通过 EXPIRE 或者 PEXPIRE 命令,客户端可以以秒或毫秒精度为数据库中的某个键设置生存时间 TTL (Time To Live)
SETEX 命令可以设置一个字符串的同时为键设置过期时间
redisDb 结构的 expires 字典保存了数据库中所有键的过期时间,我们称这个字典为过期字典:
typedef struct redisDb{
// ...
// 过期字典
dict *expires;
// ...
} redisDb;
通过过期字典,可以用以下步骤检查一个给定键是否过期:
在使用惰性删除策略时,如果数据库中有非常多的过期键,而这些过期键又恰好没有被访问到的话,那他们也许永远也不会被删除,除非手动执行 FLUSHDB, 我们甚至可以将这种情况看作是一种内存泄漏,这对于运行状态非常依赖内存的 Redis 服务器来说,肯定不是一个好消息。
其中, Redis 使用了惰性删除和定期删除两种策略
原文:https://www.cnblogs.com/gaffey/p/14989705.html