Redis中数据过期删除策略

过期删除策略方案:惰性删除、定期删除。

一、惰性删除:

设置Key过期时间后,当我们去查询Key时,会检查Key是否过期。如果过期,就删除掉Key,否则返回Key。

**优点:**只有在使用Key的时候才会去进行检查当前Key是否过期。

**缺点:**如果大量的Key一直没有被使用,就会存在内存中,内存一直不会被释放。

二、定期删除:

每隔一段时间就是对内存的Key进行一定量的检查,删除过期的Key。

**定期清理有两种模式:**SLOW模式、FAST模式。

SLOW模式:

1、SLOW模式也称为慢速模式,在这种模式下,Redis会尽量保持性能稳定,即使内存使用已经达到上限,Redis仍然会继续处理请求,但可能会导致内存使用超出配置的阈值。

2、当Redis处于SLOW模式下时,如果继续写入数据导致内存使用超出阈值,新写入操作会返回错误,并提示需要等待内存得到释放。

3、这种模式适用于对系统性能要求较高,可以容忍短暂的内存使用超限情况的场景。

FAST模式:

1、FAST模式也称为快速模式,在这种模式下,Redis会优先释放内存以确保内存使用不会超过配置的上限。这样可以避免出现内存使用过高导致系统运行不稳定的情况。

2、当Redis处于FAST模式下时,一旦内存使用接近上限,Redis会立即采取内存淘汰策略,删除一些键来释放内存空间,从而确保系统的稳定性。

3、这种模式适用于对内存占用有严格要求的场景,能够确保系统在内存使用达到上限时依然能够正常运行。

总结:

在Redis中,惰性删除策略确保了过期键及时被删除,避免了过期键被返回给客户端的情况。而定期删除策略则以一定的频率清理部分过期键,保持系统的内存使用在可接受范围内。

需要注意的是,Redis并不保证所有过期键都会立即删除,因为Redis的删除操作是通过惰性删除和定期删除相结合的方式来进行的。如果对于应用来说,即使出现过期键仍然可以接受,那么这两种模式的组合就能够提供一个较好的缓存删除策略。