Redis 缓存过期处理与内存淘汰机制
关键词: 发布时间:2020-06-29 15:53:18 浏览次数:79

已过期的key如何处理?

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

  1. (主动)定时删除

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

  2. (被动)惰性删除

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

所以,虽然key过期了,但是只要没有被redis清理,那么其实内存还是会被占用着的。

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

内存占满了,可以使用硬盘,来保存,但是没意义,因为硬盘没有内存快,会影响redis性能。
所以,当内存占用满了以后,redis提供了一套缓存淘汰机制:MEMORY MANAGEMENT

相关配置:

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

hz 每秒检测次数

maxmemory-policy 默认清理算法

相关清理算法说明:

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


赞:(0)
踩:(0)
相关文章
redis数据类型及常用命令
redis慢查询
redis pipeline
redis 发布与订阅
redis位图bitmap
redis HyperLogLog
redis geo
redis数据持久化
redis布隆过滤器
redis消息队列实例
热门文章
win7中将文件拷贝到虚拟机linux下
php中用uploadify上传时session丢
laravel页面静态化的方法
centos7.4 64位下swoole安装及配置
centos7.4下php7.25多线程pthreads
微信扫一扫在哪
php-fpm经常卡死
单点登录sso原理及php实现方式及de
phpexcel设置行高及列宽,背景颜色,
一个简单的laravel分表联合查询
好评文章
php7中使用mongodb的aggregate进行
windows下使用MongoDB Compass Com
phpexcel设置行高及列宽,背景颜色,
laravel 中悲观锁 & 乐观锁的使用
laravel整合dingo/api方法步骤:jwt
在php中用curl请求java接口无法获
laravel页面静态化的方法
一个简单的laravel分表联合查询
laravel对具体的路由不采用csrfTok
php7 mongodb distinct及count方法
标签
rabbitmq mysql备份 elasticsearch
站点信息
建站时间:2011年
文章数:500篇
浏览数:253628
粤ICP备18028092号-1  微信:hurong241