栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

redis内存淘汰策略

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

redis内存淘汰策略

Redis key的过期时间和永久有效分别怎么设置?
EXPIRE和PERSIST命令。

EXPIRE:到期的意思;用于设置过期时间的。
PERSIST:继续存在的意思;用于设置永久有效的。



即没有配置的话,默认是我们主机的最大内存。

通过命令来配置redis占用的内存大小:

config set maxmemory 大小
config get maxmemory


查看内存使用情况:info memory

redis内存打满的情况:如:

缓存过期淘汰策略:

三种不同的过期键的删除策略:

我们都知道,Redis是key-value数据库,我们可以设置Redis中缓存的key的过期时间。Redis的过期策略就是指当Redis中缓存的key过期了,Redis如何处理。

过期策略通常有以下三种:

注意;Redis中同时使用了惰性删除和定期删除两种过期策略。

第一种:定时删除

定时删除即到期立即清除

定时过期:每个设置过期时间的key都需要创建一个定时器,到过期时间就会立即清除。

该策略可以立即清除过期的数据,对内存很友好;但是会占用大量的CPU资源去处理过期的数据,从而影响缓存的响应时间和吞吐量。


定时删除总结:

第二种:惰性删除

惰性删除:用的时候判读是否过期,过期则删除,不过期则使用

原理:惰性删除不在是redis去主动删除,而是在你要获取某个key 的时候,redis会先去检测一下这个key是否已经过期,如果没有过期则返回给你,如果已经过期了,那么redis会删除这个key,不会返回给你。

该策略可以最大化地节省CPU资源,却对内存非常不友好。极端情况可能出现大量的过期key没有再次被访问,从而不会被清除,占用大量内存。


第三种:定期删除:

redis 会将每个设置了过期时间的 key 放入到一个独立的字典中,以后会定期遍历这个字典来删除到期的 key。

Redis 默认会每秒进行十次过期扫描(100ms一次),过期扫描不会遍历过期字典中所有的 key,而是采用了一种简单的贪心策略。

1.从过期字典中随机 20 个 key;

2.删除这 20 个 key 中已经过期的 key;

3.如果过期的 key 比率超过 1/4,那就重复步骤 1;

redis默认是每隔 100ms就随机抽取一些设置了过期时间的key,检查其是否过期,如果过期就删除。注意这里是随机抽取的。为什么要随机呢?假如 redis 存了几十万个 key ,每隔100ms就遍历所有的设置过期时间的 key 的话,就会给 CPU 带来很大的负载。

Redis中同时使用了惰性删除和定期删除两种过期策略。

2.为什么需要淘汰策略

有了以上过期策略的说明后,就很容易理解为什么需要淘汰策略了,因为不管是定期采样删除还是惰性删除都不是一种完全精准的删除,就还是会存在key没有被删除掉的场景,所以就需要内存淘汰策略进行补充。

内存淘汰策略:

生产上常用的是:

配置:
方式一:

方式二:

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/987942.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号