Redis 过期策略和淘汰策略

1、Redis 过期策略

Redis 过期策略用于处理设置了缓存时间的数据,使用定时扫描和惰性删除机制删除到期的缓存数据。

Redis 将设置了过期时间的 key 保存在一个独立的字典中,定时扫描就是针对这个字典,删除到期的 key。

定时扫描的默认设置就是每秒进行10次扫描,从字典中随机选择20个 key,将其中到期的 key 删除,如果到期的 key 超过四分之一,则继续扫描,删除,为了避免迭代次数过多造成服务卡顿,将扫描时间默认设置为最多25毫秒。实际使用时,为了避免大量 key 在同一时间到期,造成上述情况引起的卡顿问题,在设置 key 的到期时间时,最好在过期时间基础上添加一个随机时间。

惰性删除就是在客户端使用 key 的时候,Redis 检查这个 key 的过期时间,如果到期了就立即删除。

2、Redis 淘汰策略

Redis 陶策策略是在 Redis 内存超出物理内存限制时,采用的策略,用于删除部分 key,以保证线上读写服务的进行,其中物理内存限制可以设置。

Redis 提供了 6 种淘汰策略:

noeviction:默认策略,这种策略会继续处理读请求,删除请求,但是不会处理写请求,好处就是不会丢失数据。

volatile-lru:最少使用并且设置了过期时间的 key 最先被淘汰,这种算法依据元素最近被访问的时间进行排序,这样最近被使用的 key 就不会被删除。

volatile-ttl:设置了过期时间并且剩余时间最小的 key 最先被删除。

volatile-random:设置了过期时间的 key 被随机选中删除。

allkeys-random:从所有 key 中随机选择删除。

allkeys-lru:类似volatile-lru策略,只是从所有 key 中 选择。

Redis这种淘汰策略删除数据,使用的是异步线程进行处理,避免删除操作造成线上服务的卡顿。

猜你喜欢

转载自blog.csdn.net/suoyx/article/details/114741566
今日推荐