redis过期策略

思考:

一个 redis 中可能同时存在很多 key,这些 key 可能有的设置了过期时间。此时,redis 服务器怎么知道哪些 key 过期要被删除,哪些 key 还没有过期呢???

一个一个遍历删除太慢了,这是不可能的,因此 redis 提供了这两种策略相结合:

  • 定期删除 :每隔一段时间,抽取一部分进行验证过期时间(保证抽取的过程足够快, redis为单线程程序,里面会有很多任务,防止任务阻塞,必须快速进行扫描)
  • 惰性删除 :只有当访问一个 key 时,才会判断该 key 是否已过期,过期则清除。该策略可以最大化地节省CPU资源,却对内存非常不友好。极端情况可能出现大量的过期key没有再次被访问,从而不会被清除,占用大量内存。

虽然有这两种结合的策略,但是效果不是很好。业务量大起来了,redis 的 key 被大量使用,内存直接不够了。难道redis直接这样挂掉?不会的!redis用8种内存淘汰策略保护自己~

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