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过期时间的缓存中,删除即将过期的
THE END
分享
二维码
< <上一篇
下一篇>>