redis内存淘汰策略

16 篇文章 4 订阅

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没有被删除掉的场景,所以就需要内存淘汰策略进行补充。

内存淘汰策略:
在这里插入图片描述

在这里插入图片描述

生产上常用的是:
在这里插入图片描述

配置:
方式一:
在这里插入图片描述

方式二:
在这里插入图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值