Redis 缓存过期处理以及内存淘汰机制

1 介绍

计算机内存有限,越大越贵,Redis的高并发高性能都是基于内存的,用硬盘的话性能会比较差,为保证快速的数据响应,需要对缓存中的数据进行清除。

2 过期key处理

设置了expire的key缓存过期了,但是服务器的内存还是会被占用,这是因为redis所基于的两种删除策略 。

1(主动)定时删除

  • 定时随机的检查过期的key,如果过期则清理删除。(每秒检查次数在redis.conf中的hz配置)

2(被动)惰性删除

  • 当客户端请求一个已经过期的key的时候,那么redis会检查这个key是否过期,如果过期了,则删除,然后返回一个nil。这种策略相对来说比较友好,不会有太多的损耗,但是内存占用会比较高。

所以说,即时redis的key过期,但是只要没被redis清理,就还是会占用着内存。

3 内存淘汰机制

内存沾满了,可以使用磁盘保存数据,这样的话,会大大降低数据的响应速度,违背我们的初衷,影响redis的性能。

所以,当内存占满以后,redis提供了一套缓存淘汰机制,MEMORY MANAGEMENT

maxmemory :当内存已使用率到达,则开始清理缓存

* noeviction:旧缓存永不过期,新缓存设置不了,返回错误
* allkeys-lru:清除最少用的旧缓存,然后保存新的缓存(推荐使用)
* allkeys-random:在所有的缓存中随机删除(不推荐)
* volatile-lru:在那些设置了expire过期时间的缓存中,清除最少用的旧缓存,然后保存新的缓存
* volatile-random:在那些设置了expire过期时间的缓存中,随机删除缓存
* volatile-ttl:在那些设置了expire过期时间的缓存中,删除即将过期的

4 相关信息

  • 博文不易,辛苦各位猿友点个关注和赞,感谢

猜你喜欢

转载自blog.csdn.net/qq_15769939/article/details/113831246