过期策略(TTL)与淘汰策略

过期策略指的是ttl到期时的处理策略,淘汰策略指的是内存满了的情况下的策略 

1、过期策略(TTL)

  • 定期删除,Redis默认每隔100ms会从设置了过期时间的key中随机抽取一部分来检查是否过期,如果过期就删除。
  • 惰性删除(有点像是懒加载),定期删除可能会导致很多设置了过期时间的key没有被及时删除,所以就有了惰性删除,即在查询这个key时,检查一下是否过期,如果过期就删除。

2、淘汰策略

        内存满后有什么策略,默认的:当内存不足以容纳新写入数据时,新写入操作会报错。

结合定期删除 + 惰性删除 Redis 实现了key的过期时间机制,但还是会有一些key会没有被定期删除掉,也没有被查询,就遗留在了内存中,当数据量大到一定程度后,会导致内存的堆积。这就涉及到了 内存淘汰机制

当内存容量到达了上限或者 配置的maxmemory时,会触发 内存淘汰策略

Redis提供了几种策略供我们选择:

1)noeviction:当内存不足以容纳新写入数据时,新写入操作会报错。

2)allkeys-lru:当内存不足以容纳新写入数据时,在键空间中,移除最近最少使用的key。

3)allkeys-random:当内存不足以容纳新写入数据时,在键空间中,随机移除某个key。

4)volatile-lru:当内存不足以容纳新写入数据时,在设置了过期时间的键空间中,移除最近最少使用的key。

5)volatile-random:当内存不足以容纳新写入数据时,在设置了过期时间的键空间中,随机移除某个key。

6)volatile-ttl:当内存不足以容纳新写入数据时,在设置了过期时间的键空间中,有更早过期时间的key优先移除。

总的来说,无论是 LRU LFU TTL 还是Random 都是几近算法来实现的,在可靠性和性能上做了一定的平衡。还是应该在业务中主动删除没有价值的数据,或者更新某些key的过期时间等来提高Redis的性能和空间,不能过分依赖于淘汰策略。

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Redis删除策略淘汰策略是用来管理内存空间的。当Redis的内存被写满时,会触发内存的淘汰策略。删除策略针对的是通过expire命令设置了过期时间的数据,而淘汰策略则针对那些没有过期时间或者是永久性数据的情况。 Redis的删除策略有以下几种: - noeviction:只返回错误,不会删除任何键。这是Redis的默认淘汰策略。 - volatile-ttl:删除即将过期(剩余存活时间最短)的键。 - volatile-random:在设置了过期时间的键中,随机删除某个键。 - allkeys-random:从所有键中随机删除某个键。 - volatile-lru:基于最近最少使用(LRU)算法,删除最近最少使用的键。 - allkeys-lru:基于LRU算法,从所有键中删除最近最少使用的键。这是最常使用的策略。 需要注意的是,当Redis执行命令之前会检测内存是否充足,如果不满足加入新数据的条件,就会执行淘汰策略来删除未过期的数据。淘汰策略会根据具体的配置文件来确定使用哪种策略。 总结起来,删除策略是针对设置了过期时间的数据,而淘汰策略则是针对没有过期时间的数据或者是永久性数据,用来管理Redis的内存空间。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [redis的删除策略淘汰策略](https://blog.csdn.net/weixin_42112028/article/details/125297076)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [Redis删除策略淘汰策略](https://blog.csdn.net/weixin_52464817/article/details/125859022)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值