旅游在线网站开发小米发布会后多久可以买到新机
web/
2025/9/28 18:00:51/
文章来源:
旅游在线网站开发,小米发布会后多久可以买到新机,网页设计模板html代码运行,wordpress主题 欣赏Redis 内存管理
1. Redis 给缓存数据设置过期时间的作用
给缓存数据设置过期时间#xff08;TTL, Time-To-Live#xff09;有以下几个重要作用#xff1a;
(1) 自动释放内存
避免缓存数据无限增长#xff0c;导致 Redis 内存溢出。例如#xff0c;在 会话管理、短连接…Redis 内存管理
1. Redis 给缓存数据设置过期时间的作用
给缓存数据设置过期时间TTL, Time-To-Live有以下几个重要作用
(1) 自动释放内存
避免缓存数据无限增长导致 Redis 内存溢出。例如在 会话管理、短连接信息、临时令牌 等场景下设置过期时间可以自动清理数据避免占用大量内存。
(2) 提高缓存的实时性
设置较短的 TTL 让数据 保持新鲜保证用户获取的是最新的数据。例如热点新闻、秒杀活动商品库存需要定期更新。
(3) 限制数据的生命周期
适用于 验证码、用户 Token 等数据超时后自动失效提高安全性。例如验证码有效期 5 分钟超时后自动删除防止恶意重复使用。
(4) 提高缓存命中率
如果数据频繁变化不设置过期时间可能导致大量 冷数据 长期占用内存影响缓存命中率。通过 TTL 控制数据生命周期保证 Redis 主要存储热点数据。 2. Redis 是如何判断数据是否过期的
Redis 通过 两种方式 判断数据是否过期
(1) 访问 Key 时检查惰性删除
**机制**当客户端访问一个 Key如 GET key时Redis 检查其过期时间 如果 Key 已过期立即删除并返回 nil 或默认值。如果 Key 未过期则正常返回数据。 优点减少 CPU 资源占用仅对访问的数据进行检查。缺点如果一个 Key 长期不被访问即使已经过期也不会被删除可能导致 内存占用过高。
(2) 定期扫描过期 Key定期删除
**机制**Redis 每 100ms 进行一次过期检查 随机抽取部分 Key默认 20 个。检查是否过期如果过期就删除。如果删除的 Key 超过 25%默认阈值则继续下一轮检查避免过期 Key 堆积。 优点可以主动清理一部分过期数据减少内存占用。缺点无法保证所有过期 Key 及时删除仍可能导致部分过期数据滞留。 3. Redis 过期 Key 的删除策略
Redis 采用 三种删除策略 结合使用以平衡 性能 和 内存占用。
删除策略触发时机优点缺点惰性删除访问 Key 时检查CPU 资源占用低只检查访问的数据冷数据不会被清理可能导致内存占满定期删除每 100ms 扫描部分 Key主动清理一部分过期 Key避免过期数据堆积无法清理所有过期 Key仍可能占用大量内存内存淘汰Eviction内存满时触发确保 Redis 可用释放空间给新数据可能删除热点数据影响缓存命中率 4. Redis 的内存淘汰策略Eviction Policy
如果过期 Key 没有及时删除导致 内存达到 maxmemory 限制Redis 会采用 内存淘汰策略 释放空间主要有三类
(1) 直接拒绝写入
noeviction默认策略 机制当 Redis 内存满了拒绝新的写入请求返回错误。适用场景适用于 不能丢失数据 的场景如金融交易数据。缺点可能导致系统不可用。
(2) 仅淘汰带过期时间TTL的 Key
volatile-lru淘汰 带 TTL 的 Key按 LRU最近最少使用删除。volatile-lfu淘汰 带 TTL 的 Key按 LFU最少使用删除。volatile-random随机删除 带 TTL 的 Key。volatile-ttl优先删除 TTL 最短的 Key。
(3) 淘汰所有 Key
allkeys-lru在 所有 Key 中删除 最近最少使用LRU 的 Key。allkeys-lfu在 所有 Key 中删除 最少使用LFU 的 Key。allkeys-random随机删除 任意 Key。
淘汰策略对比
策略适用范围适用场景优点缺点noeviction所有 Key不能丢失数据的业务数据绝对安全可能导致 Redis 无法写入allkeys-lru所有 Key普通缓存如 Web 缓存保留热点数据LRU 计算有额外开销volatile-lru仅带 TTL有过期时间的缓存保留热点缓存数据TTL 过少时可能无 Key 可删除allkeys-random所有 Key低优先级缓存简单高效可能误删热点数据volatile-random仅带 TTL无访问规律的缓存低计算成本命中率低volatile-ttl仅带 TTL定期缓存数据优先删除即将过期的数据TTL 设定不合理可能影响命中率allkeys-lfu所有 Key热点数据变化快优先保留高频访问数据计算比 LRU 高volatile-lfu仅带 TTL高频访问缓存结合访问频率和 TTL 进行优化计算比 LRU 高 5. 综述
为什么 Redis 需要设置过期时间 释放内存防止数据无限增长。保证数据实时性避免使用陈旧数据。提高缓存命中率让 Redis 保留热点数据。符合业务需求如验证码、Token 需要自动失效。 Redis 如何判断 Key 是否过期 惰性删除访问 Key 时检查若过期则删除。定期删除每 100ms 随机检查部分 Key并删除过期 Key。 Redis 过期 Key 如何删除 惰性删除 定期删除 内存淘汰策略 结合平衡 性能 和 内存占用。 Redis 如何在内存满时清理数据 默认拒绝写入noeviction基于 LRU/LFU/TTL 的内存淘汰策略随机淘汰或基于访问频率、TTL 进行优化
通过合理设置 过期时间 淘汰策略可以让 Redis 高效管理内存保证缓存数据的 可用性和实时性。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/83454.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!