Redis缓存过期机制
Redis的key设置了过期时间后(expire);虽然key过期查询不了,但是还是会占用服务器内存;
过期的缓存删除redis有两种策略
定期删除 (主动)
惰性删除(被动)
主动删除
redis定时检测缓存key是否过期,默认10次一秒 (区间 1-500)
也可以提升他的检查频率,但是这样做会使CPU被占用的更多;
惰性删除
客户端请求的时候,当检测到这个key是过期的时候,才会对这个过期缓存进行删除;
这么做就对cpu非常友好,但是缺点就是用户如果一直不请求这个资源,那么这个过期key就会一直存在在内存中,占用内存资源;
针对于设置了expire的key
1、(主动)定期删除 (固定时间去检查过期key,进行删除,默认每秒检查10次)
2、(被动)惰性删除 (等客户端请求,请求到这个key,发现这个key过期了就删除)
内存淘汰管理机制
memory management
缩写解释:
lru: 最久远被用到的
lfu: 最少被使用到的
volatile: 带有过期时间的
volatile-ttl: 删除最快过期的key
* noeviction:旧缓存永不过期,新缓存设置不了,返回错误
* allkeys-lru:清除最少用的旧缓存,然后保存新的缓存(推荐使用)
* allkeys-random:在所有的缓存中随机删除(不推荐)
* volatile-lru:在那些设置了expire过期时间的缓存中,清除最少用的旧缓存,然后保存新的缓存
* volatile-random:在那些设置了expire过期时间的缓存中,随机删除缓存
* volatile-ttl:在那些设置了expire过期时间的缓存中,删除即将过期的