合理地处理不需要的缓存

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 Tair(兼容Redis),内存型 2GB
简介: 【6月更文挑战第8天】本文介绍了管理缓存数据过期的重要性,以避免内存浪费和过时信息的使用。缓存系统通常允许设置默认过期策略或为每个对象指定绝对或滑动过期时间。缓存服务常使用LRU策略进行逐出,但过度使用可能导致内存超出异常。

1 简介

当缓存中的数据不再有用时,我们可能需要删除它们,否则过时的数据永久停留在缓存中将造成内存和计算资源的浪费。

mandala曼德罗符号.png

过期策略包括惰性删除、定期删除和内存淘汰,如LRU、LFU和随机淘汰。

服务端无法直接控制客户端缓存,可能导致过时信息的使用,尤其是当URI不变时。
正确的过期期限设置是平衡性能和数据新鲜度的关键,过短会频繁请求,过长则可能导致数据过时和缓存溢出。

2 管理缓存中的数据过期时间

在大多数情况下,缓存中保存的数据是原始数据存储中保存的数据的副本。原始数据存储中的数据在缓存后可能会更改,从而导致缓存的数据过时。许多缓存系统使您能够将缓存配置为使数据过期并缩短数据可能过期的时间段。

当缓存的数据过期时,它将从缓存中删除,应用程序必须从原始数据存储中检索数据(它可以将新提取的信息放回缓存中)。您可以在配置缓存时设置默认过期策略。

在许多缓存服务中,当您以编程方式将单个对象存储在缓存中时,还可以规定这些对象的过期期限。

某些缓存允许您将过期期限指定为绝对值,或指定为滑动值,如果项目未在指定时间内访问,则会导致从缓存中删除项目。此设置将覆盖任何缓存范围的过期策略,但仅适用于指定的对象。

3 缓存的过期策略

1 惰性删除(在查询key时才检测是否过期,缺点低频key不会被删除)

2 定期删除(每隔一段时间则随机删除一些过期key)

3 内存淘汰

已设置过期时间 volatile

            lru 最近最少使用
            lfu 总的最少使用
            random 随机淘汰算法
            ttl 生存时间淘汰

未设置过期时间 allkeys

              lru 所有key最近最少使用
            lfu 所有key最不经常使用
            random 所有key随机淘汰

某些缓存实现可能会提供其他逐出策略。有几种类型的逐出策略。其中包括:

最近使用的策略(预期不再需要数据)。
先进先出策略(首先逐出最旧的数据)。
基于触发事件(例如正在修改的数据)的显式删除策略。

使客户端缓存中的数据失效,客户端缓存中保存的数据通常被视为不在向客户端提供数据的服务的支持下。服务不能直接强制客户端在客户端缓存中添加或删除信息。

这意味着使用配置不佳的缓存的客户端可能会继续使用过时的信息。

例如,如果未正确实现缓存的过期策略,则当原始数据源中的信息发生更改时,客户端可能会使用本地缓存的过时信息。

如果生成通过 HTTP 连接提供数据的 Web 应用程序,则可以隐式强制 Web 客户端(如浏览器或 Web 代理)获取最新信息。

如果资源通过更改资源的 URI 进行更新,则可以执行此操作。Web 客户端通常使用资源的 URI 作为客户端缓存中的键。

因此,如果 URI 发生更改,Web 客户端将忽略资源的任何以前缓存的版本,而是提取新版本。

4 小结

请仔细考虑缓存及其包含的对象的过期期限。如果设置得太短,对象将过期太快,并且会降低使用缓存的好处。如果使时间段过长,则数据可能会过时。

如果允许数据长时间驻留,缓存也可能会填满。

在这种情况下,任何向缓存添加新项的请求都可能导致在称为逐出的过程中强制删除某些项。

缓存服务通常基于最近最少使用 (LRU) 逐出数据,但您通常可以替代此策略并防止逐出项目。

但是,如果采用此方法,则可能会超出缓存中的可用内存。尝试将项添加到缓存的应用程序将失败并出现异常。

目录
相关文章
|
6月前
|
存储 缓存 监控
中间件应用合理使用缓存和数据结构
【5月更文挑战第4天】中间件应用合理使用缓存和数据结构
90 3
中间件应用合理使用缓存和数据结构
|
缓存 自然语言处理 微服务
合理的使用缓存提升接口性能
合理的使用缓存提升接口性能
|
消息中间件 存储 缓存
缓存 Redis 在项目中合理使用经验总结
Redis 是一个开源的内存数据结构存储系统。 可以作为数据库、缓存和消息中间件使用。
|
26天前
|
存储 缓存 NoSQL
数据的存储--Redis缓存存储(一)
数据的存储--Redis缓存存储(一)
60 1
|
26天前
|
存储 缓存 NoSQL
数据的存储--Redis缓存存储(二)
数据的存储--Redis缓存存储(二)
37 2
数据的存储--Redis缓存存储(二)
|
22天前
|
消息中间件 缓存 NoSQL
Redis 是一个高性能的键值对存储系统,常用于缓存、消息队列和会话管理等场景。
【10月更文挑战第4天】Redis 是一个高性能的键值对存储系统,常用于缓存、消息队列和会话管理等场景。随着数据增长,有时需要将 Redis 数据导出以进行分析、备份或迁移。本文详细介绍几种导出方法:1)使用 Redis 命令与重定向;2)利用 Redis 的 RDB 和 AOF 持久化功能;3)借助第三方工具如 `redis-dump`。每种方法均附有示例代码,帮助你轻松完成数据导出任务。无论数据量大小,总有一款适合你。
56 6
|
27天前
|
缓存 NoSQL 关系型数据库
redis和缓存及相关问题和解决办法 什么是缓存预热、缓存穿透、缓存雪崩、缓存击穿
本文深入探讨了Redis缓存的相关知识,包括缓存的概念、使用场景、可能出现的问题(缓存预热、缓存穿透、缓存雪崩、缓存击穿)及其解决方案。
127 0
redis和缓存及相关问题和解决办法 什么是缓存预热、缓存穿透、缓存雪崩、缓存击穿
|
2天前
|
存储 缓存 监控
利用 Redis 缓存特性避免缓存穿透的策略与方法
【10月更文挑战第23天】通过以上对利用 Redis 缓存特性避免缓存穿透的详细阐述,我们对这一策略有了更深入的理解。在实际应用中,我们需要根据具体情况灵活运用这些方法,并结合其他技术手段,共同保障系统的稳定和高效运行。同时,要不断关注 Redis 缓存特性的发展和变化,及时调整策略,以应对不断出现的新挑战。
21 10
|
2天前
|
缓存 监控 NoSQL
Redis 缓存穿透的检测方法与分析
【10月更文挑战第23天】通过以上对 Redis 缓存穿透检测方法的深入探讨,我们对如何及时发现和处理这一问题有了更全面的认识。在实际应用中,我们需要综合运用多种检测手段,并结合业务场景和实际情况进行分析,以确保能够准确、及时地检测到缓存穿透现象,并采取有效的措施加以解决。同时,要不断优化和改进检测方法,提高检测的准确性和效率,为系统的稳定运行提供有力保障。
20 5
|
2天前
|
缓存 监控 NoSQL
Redis 缓存穿透及其应对策略
【10月更文挑战第23天】通过以上对 Redis 缓存穿透的详细阐述,我们对这一问题有了更深入的理解。在实际应用中,我们需要根据具体情况综合运用多种方法来解决缓存穿透问题,以保障系统的稳定运行和高效性能。同时,要不断关注技术的发展和变化,及时调整策略,以应对不断出现的新挑战。
17 4

热门文章

最新文章

  • 1
    非阻塞 I/O:异步编程提升 Python 应用速度
    8
  • 2
    2024 Mysql基础与进阶操作系列之MySQL触发器详解(20)作者——LJS[你个小黑子这都还学不会嘛?你是真爱粉嘛?真是的 ~;以后请别侮辱我家鸽鸽]
    5
  • 3
    2024 RedisAnd Mysql基础与进阶操作系列(16-1)作者——LJS[你个小黑子这都还学不会嘛?你是真爱粉嘛?真是的 ~;以后请别侮辱我家鸽鸽]
    4
  • 4
    2024Mysql And Redis基础与进阶操作系列(13)作者——LJS[你个小黑子这都还学不会嘛?你是真爱粉嘛?真是的 ~;以后请别侮辱我家鸽鸽]
    6
  • 5
    2024Mysql And Redis基础与进阶操作系列(10)作者——LJS[你个IKUN还学不会嘛?你是真爱粉嘛?真是的 ~;以后别侮辱我家鸽鸽]
    5
  • 6
    2024 RedisAnd Mysql基础与进阶操作系列(15)作者——LJS[你个小黑子这都还学不会嘛?你是真爱粉嘛?真是的 ~;以后请别侮辱我家鸽鸽]
    4
  • 7
    2024Mysql And Redis基础与进阶操作系列(9)作者——LJS[含MySQL存储过程之局部、系统变量、参数传递、流程控制-判断/case具体详步骤;注意点及常见报错问题所对应的解决方法]
    8
  • 8
    2024 Mysql基础与进阶操作系列之MySQL触发器详解(21)作者——LJS[你个小黑子这都还学不会嘛?你是真爱粉嘛?真是的 ~;以后请别侮辱我家鸽鸽]
    7
  • 9
    2024 RedisAnd Mysql基础与进阶操作系列(19)作者——LJS[你个小黑子这都还学不会嘛?你是真爱粉嘛?真是的 ~;以后请别侮辱我家鸽鸽]
    7
  • 10
    2024 RedisAnd Mysql基础与进阶操作系列(18)作者——LJS[你个小黑子这都还学不会嘛?你是真爱粉嘛?真是的 ~;以后请别侮辱我家鸽鸽]
    5