Redis过期策略

Redis的过期策略有三种。

定时过期

  • 原理:为每个设置了过期时间的键都创建一个定时器,当键的过期时间到达时,立即执行删除操作。
  • 优点:可以保证过期键会在过期时间到达时立刻被删除,内存释放得很及时。
  • 缺点:需要为每个设置了过期时间的键都创建一个定时器,这会占用大量的 CPU 资源,尤其是在有大量过期键的情况下,会严重影响 Redis 的性能。
  • 适用场景:由于其对 CPU 资源的高消耗,在实际的 Redis 应用中基本不会使用这种过期策略。

惰性过期

  • 原理:不主动删除过期键,而是在访问某个键时,先检查该键是否过期,如果过期则删除该键并返回空。
  • 优点:对 CPU 资源友好,只有在访问到过期键时才进行删除操作,不会主动消耗 CPU 去检查过期键。
  • 缺点:如果一个过期键一直没有被访问,那么它会一直占用内存,可能导致内存泄漏。
  • 适用场景:适用于对内存使用不太敏感,而对 CPU 性能要求较高的场景。

定期过期

  • 原理:Redis 每隔一段时间(默认是 100ms),会随机抽取一部分设置了过期时间的键进行检查,删除其中过期的键。
  • 优点:通过定期检查,能在一定程度上控制过期键对内存的占用,同时也不会像定时过期那样对 CPU 资源造成过大的压力。
  • 缺点:如果在检查周期内,过期键没有被抽到检查,那么这些过期键可能会在一段时间内仍然占用内存。
  • 适用场景:Redis 实际采用的过期策略是惰性过期和定期过期相结合的方式。这种组合方式既能保证一定的内存使用效率,又不会对 CPU 性能造成太大影响。

相关文章

开始在上面输入您的搜索词,然后按回车进行搜索。按ESC取消。

返回顶部