Redis中过期删除策略和内存淘汰策略

本文详细介绍了Redis中的过期删除策略,包括设置过期时间的必要性、判断键是否过期的方法以及两种过期策略。同时深入探讨了内存淘汰策略,如不进行淘汰和使用LRU、LFU算法的淘汰规则。最后讲述了如何配置和调整内存淘汰策略,以及LRU和LFU算法的工作原理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

过期删除策略

Redis的回收机制不会回收没有设定过期时间的数据,只会回收设置了有效期的。如果内存满了,那么就不会在接受写操作。

那为什么要设置过期时间呢?

  1. 可以确保缓存数据在一定时间内以有效。避免使用过期或无效的数据。
  2. 有效地释放内存空间,提高Redis服务器的性能和处理能力。
  3. 防止缓存雪崩,若同时大量数据失效或过期,那此时请求直接会落到数据库上,时数据库压力剧增。通过设置不同的过期时间,可以避免缓存同时过期,分散了请求对数据库的冲击,提高系统稳定性。

如果设置过期时间?

> expire key 10       // 给 key 设置过期时间, 单位 为 秒

> pexpire key 100         // 毫秒设置 过期时间

>  persist key   // 移除 key 的过期时间

判断键是否过期?

> exists ha           //  判断是否存在 键
(integer) 1

> ttl key  // 以秒为单位,返回 key的过期时间
> pttl key // 以毫秒为单位,返回key的过期时间

过期策略有哪些?

定期删除

每隔一段时间,随机检查一些设置过期时间的键,如果发现该键已经过期,那就将该键进行标记删除。

定期删除为什么选择抽检而不全检?

若遍历全部的键值对(无论是否过期),会耗费大量的资源和时间。又因为redis是单线程的,每次全检会消耗大量的CPU时间和内存带宽,导致redis性能下降。

惰性删除

惰性删除不会主动去检测删除,而是当你每次获取key的时候,会先检测 key 是否过期,如果没有过期就返回给你,若过期了,就直接删除了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值