Redis内存管理

84 阅读1分钟

Redis内存管理

设置过期时间

expire key time

setex key time value

Redis如何判断数据是否过期

通过一个基于hash过期字典(保存数据过期的时间)判断。如果在,看是否过期

在查询一个 key 的时候,Redis 首先检查该 key 是否存在于过期字典中(时间复杂度为 O(1)),如果不在就直接返回,在的话需要判断一下这个 key 是否过期,过期直接删除 key 然后返回 null

数据过期策略

定时删除,设置键的过期时间,到达指定时间后自动删除该键,对cpu压力大

惰性刪除策略在查和取的时候进行删除,对cpu友好

定期删除(Expired by Sampling):定期对Key检查,删除里面过期的Key(从一定量的数据库中取一部分随机数据进行检查,删除其中的过期键)。对内存友好。 删除根据执行时间及过期key比例进行调整

最常采用定期删除+惰性删除,通过执行时间和过期key比例进行定期删除的执行。

内存淘汰策略

  • 设置过期时间的最近最少用
  • 全键的最近最少用
  • 设置过期时间的随机
  • 全键的随机
  • 新写入报错
  • 挑选将要过期的