Redis的key超时策略和淘汰机制(面试题)

在缓存系统中, key的超时策略和淘汰机制是非常重要的两个概念,一下是对这两个概念的简单介绍:

Redis中的Key超时策略和Key淘汰机制是为了有效管理内存控制数据的生命周期.

1.Key的超时策略:在Redis中可以针对每个Key设置过期时间, 当过期后,它将会被自动删除, 以释放内存的空间, Redis并不支持基于访问次数的过期时间, 也就是说,  无论这个Key是否会被访问到, 只要设置的过期时间一到, Redis就会把它删除掉.

需注意的是,Redis的过期时间是以秒的单位来进行设置的, 可以通过使用EXPIRE命令来设置过期时间, 例如EXPIRE key seconds来进行设置, 其中key 表示过期时间的key seconds表示过期时间,时间是以秒为单位.

除了设置时间, 还可以使用TTL来获取一个key的过期时间, 例如 TTL key 该命令会返回一个整数值表示key的剩余时间(以秒为单位), 如果返回-1 则表示key没有设置过期时间,如果返回-2,则表示key不存在.

超时策略可以用于缓存失效,会话管理等场景,使得Redis可以自动清理不再使用数据,释放内存. 

Redis中的key的超时策略有两种:定时删除和惰性删除。其中,定时删除是指在设置key的过期时间时,同时创建一个定时器,当key过期时,定时器会立即执行删除操作。而惰性删除则是指在获取key时,先检查该key是否过期,如果过期则删除。此外,Redis还会定期地对一定数量的key进行过期检测和删除,以保证内存空间的有效利用。这个过程被称为定期删除.

2.Key淘汰机制:当Redis的内存不足时则需要使用淘汰机制看来决定哪些Key会被删除以释放空间,以下是常见的几种淘汰机制:

Redis6种淘汰机制
1.noeviction:当内存不足以容纳新写入数据时,新写入操作会报错(一般没人用,但是默认是使用这个策略)
2.allkeys-lru:当内存不足以容纳新写入数据时,在键空间中,移除最近最少使用的key(最常用)
3.allkeys-random:当内存不足以容纳新写入数据时,在键空间中,随机移除某个key (一般没人用)
4.volatile-lru:当内存不足以容纳新写入数据时,在设置了过期时间的键空间中,移除最近最少使用的key(一般不太合适)
5.volatile-random:当内存不足以容纳新写入数据时,在设置了过期时间的键空间中,随机移除某个
6.key volatile-ttl:当内存不足以容纳新写入数据时,在设置了过期时间的键空间中,有更早过期时间的key优先移除
 
这些策略的实现都是为了提高Redis的性能和效率。需要注意的是,由于只抽取了部分key,可能会存在过期了但没有被删除的key,因此在查询对应的key时需要注意。同时,为了避免影响性能,Redis采用随机抽取的方式进行淘汰,而不是全量检查 

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值