Redis linux - 缓存过期处理机制与内存淘汰机制
-
缓存过期处理机制
- redis中的缓存无论是过期与否,都会一直存储在内存中,只有触发机制才会被清理掉
- 定时删除-主动
- 定时随机的检查过期的key,如果过期则清理掉
- redis.conf配置文件中hz属性配置,默认每秒十次抽查,官方建议配置在1-100次
- 定时随机的检查过期的key,如果过期则清理掉
- 惰性删除-被动
- 请求一个key时,redis会检查这个key是否过期,弱国过期则删除,返回一个nil,这种策略对cup比较友好,不会有太多的消耗,但是内存清理不及时,会导致内存浪费较多
-
内存淘汰机制
- 当内存占用满了,可以使用硬盘来保存,但是没有意义,因为硬盘没有内存块快,会大大降低redis的性能,当内存占用满了,redis提供一套内存淘汰机制,MEMORY MANAGEMENT,有6种策略,默认为noeviction,在redis.conf核心配置文件中配置MEMORY MANAGEMENT noeviction
- noeviction:旧缓存永不过期,新缓存设置不了,返回错误
- allkeys-lru:清除最少用的旧缓存,然后保存新的缓存(推荐使用)
- allkeys-random:在所有的缓存中随机删除(不推荐)
- volatile-lru:在那些设置了expire过期时间的缓存中,清除最少用的旧缓存,然后保存新的缓存
- volatile-random:在那些设置了expire过期时间的缓存中,随机删除缓存
- volatile-ttl:在那些设置了expire过期时间的缓存中,删除即将过期的
- 当内存占用满了,可以使用硬盘来保存,但是没有意义,因为硬盘没有内存块快,会大大降低redis的性能,当内存占用满了,redis提供一套内存淘汰机制,MEMORY MANAGEMENT,有6种策略,默认为noeviction,在redis.conf核心配置文件中配置MEMORY MANAGEMENT noeviction