work hard work smart

专注于Java后端开发。 不断总结,举一反三。
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

Redis 缓存过期机制和内存淘汰管理机制

Posted on 2020-07-04 17:06  work hard work smart  阅读(360)  评论(0编辑  收藏  举报

一、Redis缓存过期机制有如下两种

(主动) 定期删除

(被动) 惰性删除

 

1、(主动) 定期删除

默认1秒钟10次检查.每次检查的时候,如果发现过期,则进行删除。  查看redis.conf 文件

 

 

2、(被动) 惰性删除

客户端请求的是一个key,如果检测到已经过期,则将该key从内存中清除掉。

这种策略对CPU比较友好,不会有太多的损耗,但是内存占用会比较高(如果客户端不请求,则一直占用内存)

 

二、内存淘汰管理机制

内存如果被Redis缓存占用慢了怎么办?

内存沾满了,使用使用硬盘来保存,但是没有意义,因为硬盘没有内存快,影响redis性能。

所以redis提供了一套缓存淘汰机制MEMORY MANAGEMENT。

如果服务器的内存同时被其它程序使用,如tomcat,mq等,那么redis的内存使用应该受到限制。

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

清除缓存的策略:

noeviction: 旧缓存永不工期,新缓存设置不了,返回错误。

allkeys-lru : 清除最少使用的旧缓存,然后保存新的缓存(推荐使用)

allkeys-random: 在所有的缓存中随机删除(不推荐)

vilatile-lru: 在那些设置了expire过期时间的缓存中,随机删除缓存。

volatile-ttl: 在那些设置了expire过期时间的缓存中,删除即将过期的。

 

 

查看redis.conf 文件的MEMORY MANAGEMENT