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

本文介绍了Redis中的过期策略及内存淘汰机制,并对比了惰性删除与定期删除两种方式的特点。此外,还详细阐述了五种不同的内存淘汰策略,包括LRU、LFU等常见缓存算法。

过期策略

对于过期的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) 先进先出, 如果一个数据最先进入缓存中,则应该最早淘汰掉。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值