Redis 源码分析 三 核心功能实现 数据库 , 通知

lookupKeyRead()函数调用了lookupKeyReadWithFlags()函数,后者其实就判断了一下当前键是否过期,如果没有过期,更新 misses 和 hits 信息,然后就返回值对象。

lookupKeyWrite() 函数则先判断键是否过期,然后直接调用最底层的 lookupKey() 函数,和 lookupKeyRead()函数 相比,少了一步更新 misses 和 hits 信息的过程。

2.3 键的过期时间

redisBb结构中的 expires 字典保存这设置了过期时间的键和过期的时间。通过 EXPIRE 、 PEXPIRE、 EXPIREAT 和 PEXPIREAT四个命令,客户端可以给某个存在的键设置过期时间,当键的过期时间到达时,键就不再可用。

我们重点讨论过期键的删除策略:

  1. 惰性删除:当客户度读出带有超时属性的键时,如果已经超过键设置的过期时间,会执行删除并返回空。
  2. 定时删除:Redis内部维护一个定时任务,默认每秒运行10次。
发布了331 篇原创文章 · 获赞 1 · 访问量 3512

猜你喜欢

转载自blog.csdn.net/kuaipao19950507/article/details/103677982