Redis缓存过期处理与内存淘汰机制
内容纲要
简介
计算机内存有限,越大越贵,Redis的高并发高性能都是基于内存,用硬盘效率达不到要求.
已过期的key如何处理
设置了expire的key缓存过期了,但服务器的内存还是会被占用,这是应为redis所基于的两种删除策略
redis有两种策略
1 (主动)定时删除
- 定时随机的检查过期的key,如果过期则清理删除。(每秒检查次数在redis.config中的hz配置)
2 (被动)惰性删除 - 当客户端请求一个已经过期的key的时候.那么redis会检这个key是否过期,如果过期了.则删除,然后返回一个nil。这种策略友好,不会有太多的损耗。但是内存占用会比较高。
所以,虽然ke)过期了,但是只要没有被edis清理。那么其实内存还是会被占用着的。那么如果内存被Redis缓存占用慢了咋办?
内存占满了。可以使用硬击。来保存。但是没意义。因为硬盘没有内存快,会录响redis性能。
所以,当内存占用满了以后, redis提供了一套環存淘汰机制: MEMORY MANAGEMENT
marnenory
:当内存已使用率到达,则开始清理缓存* noeviction;旧缓存永不过期,新缓存设置不了,返回错误 本allkeys- lru;清除最少用的旧缓存,然后保存新的媛存(推荐使用) * allkeys random:在所有的缓存中随机删除(不推荐) * volatile- 1ru: 在那些设置了expire过期时间的缓存中,清除最少用的旧缓存,然后保存新的缓存 * volatile randou:在那些设置了expire过期时间的缓存中,随机删除缦存 * volatile-tt1: 在那些设置了expire过期时间的缓存中,删除即将过期的
共有 0 条评论