必须知道的Redis的过期策略和内存淘汰机制

6 篇文章 0 订阅
2 篇文章 0 订阅

过期策略

对于过期的key,redis有两种方式进行删除:

  1. 惰性删除:redis不会主动的删除过期的key,而是当访问此key的时候回判断它是否过期,过期就删除并返回空。不会扫描过期key,但是占用内存资源。
  2. 定期删除:redis每隔一段时间就随机扫描部分过期key(20个),是过期的key就删除,过期key占比大于25%则再次扫描,默认每秒10次。redis配置文件hz默认是10。为了防止redis因为过期策略卡死,过期扫描的最大时间是25S。

内存淘汰

下图是redis 5.0的配置
在这里插入图片描述

  1. noeviction:当内存不足以容纳新写入数据时,新写入操作会报错,这个一般没人用吧,默认的
  2. allkeys-lru:在键空间中,移除最近最少使用的key
  3. allkeys-random:在键空间中,随机移除某个key
  4. allkeys-lfu:所有key中,移除最少(最不经常)使用的
  5. volatile-lru:在设置了过期时间的键空间中,移除最近最少没使用的key
  6. volatile-lfu:在设置了过期时间的键空间中,,移除最少使用的
  7. volatile-random:当内存不足以容纳新写入数据时,在设置了过期时间的键空间中,随机移除某个key
  8. volatile-ttl:当内存不足以容纳新写入数据时,在设置了过期时间的键空间中,有更早过期时间的key优先移除

常见的缓存算法

LRU (Least recently used) 最近最少使用,如果数据最近被访问过,那么将来被访问的几率也更高。
LFU (Least frequently used) 最不经常使用,如果一个数据在最近一段时间内使用次数很少,那么在将来一段时间内被使用的可能性也很小。
FIFO (Fist in first out) 先进先出, 如果一个数据最先进入缓存中,则应该最早淘汰掉。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值