Redis-数据过期策略

数据过期策略

  • 惰性删除策略
    • 优点:对cpu比较友好,在用到该key的时候才去进行判断,对于很多用不到key不用浪费时间去检查是否过期
    • 缺点:对内存不友好,如果一个key过期了,但是我们又一直没有用到该key,那么它就会一直存在内存中,占用的内存得不到释放
  • 定期删除策略
    • 优点:可以通过限制删除操作执行的时长和频率来减少删除操作对cpu的影响,也能有效的释放过期键解放一些内存
    • 缺点:难以确定删除操作执行的时长和频率,相比而言不那么可控

Redis-数据过期策略_第1张图片

来看看gpt如何解释把:

总之,Redis的过期key会在后台异步删除,而不是立即删除,以提高性能和避免阻塞操作。这种策略保证了Redis的高吞吐量和低延迟。但需要注意,Redis并不保证过期key一定会被删除,因为定期删除和惰性删除都是基于策略的,所以过期key可能会在一段时间内仍然存在于内存中。如果需要立即删除过期key,可以使用DEL命令手动删除它们。

惰性删除策略

设置key过期时间后,我们不去处理它,当需要用到该key时,我们再去检查它是否过期,如果该key过期,则删除该key,否则我们直接返回该key
举一个例子:
set name geng 10 我们设置一个key为name value为geng 过期时间为10
get name 我们去获取一下该key,如果发现name过期了,则直接删除掉该key

优点:对cpu比较友好,在用到该key的时候才去进行判断,对于很多用不到key不用浪费时间去检查是否过期

缺点:对内存不友好,如果一个key过期了,但是我们又一直没有用到该key,那么它就会一直存在内存中,占用的内存得不到释放

定期删除策略

每隔一段时间,我们对一些key进行检查(取一定数量的随机key),删除其中过期的key
定期清理又存在两种模式:
SLOW模式:slow模式是定时任务,执行频率默认为10hz,每次不超过25ms,可以通过redis.conf中的hz选项来配置
FAST模式:fast模式执行频率不固定,但两次间隔不低于2ms,每次耗时不超过1ms

优点:可以通过限制删除操作执行的时长和频率来减少删除操作对cpu的影响,也能有效的释放过期键解放一些内存

缺点:难以确定删除操作执行的时长和频率,相比而言不那么可控

你可能感兴趣的:(Redis,redis,数据库,缓存)