Redis的6种淘汰策略和3种删除过期键策略

文章目录

    • 6种淘汰策略
      • volatile-lru
      • volatile-ramdom
      • volatile-ttl
      • allkeys-lru
      • allkeys-random
      • noeviction(默认使用)
    • 3种删除过期键策略
      • 定时删除
      • 惰性删除
      • 定期删除

Redis中通过maxmemory参数来设定内存的使用上限,当Redis使用内存达到阈值时,会根据配置文件中的设置选取要删除的key来删除,从而给新的键值留出空间。

Redis种有6种淘汰策略

6种淘汰策略

volatile-lru

LRU算法,在设置过期时间的键中,选取一个最近最少使用的key淘汰掉

volatile-ramdom

在设置了过期时间的键中,随机选取一个key淘汰

volatile-ttl

在设置了过期时间的键中,选取一个即将要过期的key淘汰

allkeys-lru

在所有键中,选取一个最近最少使用的key淘汰掉

allkeys-random

在所有键中,随机选取一个淘汰

noeviction(默认使用)

当内存到达阈值后,所有申请内存的操作都会报错

上面6种方案是让我们选出应该淘汰的键,那具体要怎么样进行删除呢?Redis中有3种删除过期键策略

3种删除过期键策略

定时删除

在设置键的过期时间的同时,设置一个定时器,当键过期了,定时器马上把该键删除。

定时删除对内存来说是友好的,因为它可以及时清理过期键;但对CPU是不友好的,如果过期键太多,删除操作会消耗过多的资源。

惰性删除

在键过期时,放任不管,如果后来有请求来查询该键,检测到该键已经过期了,此时才将这个键删除掉。

惰性删除对CPU是友好的,因为只有在读取的时候检测到过期了才会将其删除。但对内存是不友好,如果过期键后续不被访问,那么这些过期键将积累在缓存中,对内存消耗是比较大的。

定期删除

定期删除是定时删除和惰性删除的一个折中方案。每隔一段时间来删除过期键,可以根据实际场景自定义这个间隔时间,在CPU资源和内存资源上作出权衡。

你可能感兴趣的:(Redis)