Redis 的缓存与淘汰机制

Redis 内存淘汰指的是用户存储的一些键被可以被 Redis 主动地从实例中删除

 

    淘汰机制和 Redis 最大占用内存 maxmemory 值以及过期时间 expireTime 紧密相连,典型的例子是:

 

        a.客户端发起了需要申请更多内存的命令(如set)。

        b.Redis 检查内存使用情况,如果已使用的内存大于 maxmemory 则开始根据用户配置的不同淘汰策略来淘汰已存储的数据(key),从而换取一定的内存。

        c.如果上面都没问题,则这个命令执行成功。

        注:maxmemory 为 0 的时候表示我们对 Redis 的内存使用没有限制,redis 默认设置 maxmemory 为 0。

 

    Redis 支持很多种淘汰机制:

 

        a.volatile-lru:从已设置过期时间的数据集(server.db[i].expires)中挑选最近最少使用的数据淘汰;

        b.volatile-ttl:从已设置过期时间的数据集(server.db[i].expires)中挑选将要过期的数据淘汰;

        c.volatile-random:从已设置过期时间的数据集(server.db[i].expires)中任意选择数据淘汰;d.allkeys-lru:从数据集(server.db[i].dict)中挑选最近最少使用的数据淘汰;

        e.allkeys-random:从数据集(server.db[i].dict)中任意选择数据淘汰;

        f.noeviction:禁止驱逐数据,当内存使用达到阈值的时候,所有引起申请内存的命令会报错。

 

    可以看出数据删除与否和数据是否进行过持久化没有绝对联系,只是不同版本上默认的淘汰机制有所差异,目前版本一般为 noeviction,即不允许删除数据。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值