通过与 Jira 对比,让您更全面了解 PingCode

  • 首页
  • 需求与产品管理
  • 项目管理
  • 测试与缺陷管理
  • 知识管理
  • 效能度量
        • 更多产品

          客户为中心的产品管理工具

          专业的软件研发项目管理工具

          简单易用的团队知识库管理

          可量化的研发效能度量工具

          测试用例维护与计划执行

          以团队为中心的协作沟通

          研发工作流自动化工具

          账号认证与安全管理工具

          Why PingCode
          为什么选择 PingCode ?

          6000+企业信赖之选,为研发团队降本增效

        • 行业解决方案
          先进制造(即将上线)
        • 解决方案1
        • 解决方案2
  • Jira替代方案

25人以下免费

目录

什么是缓存

缓存是一个高速数据存储层,其中存储了数据子集,且通常是短暂性存储,这样日后再次请求该数据时,速度要比访问数据的主存储位置快。通过缓存,您可以高效地重用之前检索或计算的数据。

一、什么是缓存?

在计算中,缓存是一个高速数据存储层,其中存储了数据子集,且通常是短暂性存储,这样日后再次请求该数据时,速度要比访问数据的主存储位置快。通过缓存,您可以高效地重用之前检索或计算的数据。

二、缓存如何运作?

缓存中的数据通常存储在 RAM(随机存取存储器)等快速存取硬件中,也可在软件组件相关操作中使用。缓存的主要目的是减少对底层速度较慢的存储层的访问需求,以此来提高数据检索性能。

在用容量换取速度方面,缓存通常是暂时存储数据子集,而数据库通常是完整且持久地存储数据。

三、缓存概览

RAM 和内存中引擎:因为 RAM 和内存中引擎都支持较高的请求率或 IOPS(每秒输入/输出操作数),所以缓存可以大规模提高数据检索性能并降低成本。要使传统数据库和基于磁盘的硬件达到同样的规模,还需要使用额外的资源。这些额外的资源会增加成本,而且仍然无法实现内存中的缓存提供的低延迟性能。

应用程序:在操作系统、联网层(含内容分发网络 [CDN] 和 DNS)、Web 应用程序和数据库等各层技术中都可以应用和利用缓存。对于包含大量读取操作的许多应用程序工作负载(例如问答门户网站、游戏、媒体共享和社交网络),您可以使用缓存来大幅降低延迟并提高 IOPS。缓存的信息包括数据库查询结果、计算密集型计算、API 请求/响应和 Web 构件(例如 HTML、JavaScript 和图像文件)。用于处理数据集的计算密集型工作负载(例如推荐引擎和高性能计算模拟)也将从充当缓存的内存中数据层获益。在这些应用程序中,必须跨计算机集群实时访问非常大的数据集,而这些集群可能涵盖数百个节点。出于底层硬件速度的原因,在基于磁盘的存储中操作这些数据是这些应用程序的一个主要瓶颈。

设计模式:在分布式计算环境中,借助专用缓存层,系统和应用程序可以通过自己的生命周期与缓存相互独立地运行,也不存在影响缓存的风险。缓存作为中心层,可以从具有自己的生命周期和架构拓扑的不同系统对其进行访问。在应用程序节点可以动态缩减和扩展的系统中,这一点尤其重要。如果缓存驻留在与使用它的应用程序或系统相同的节点上,那么扩展可能会影响缓存的完整性。此外,使用本地缓存时,它们只对使用数据的本地应用程序有利。在分布式缓存环境中,数据可以跨多个缓存服务器,并存储在一个中心位置,供所有使用者使用。

缓存最佳实践:实施缓存层时,务必要了解待缓存数据的有效性。成功的缓存会产生较高的命中率,这意味着数据在提取时已存在。如果提取的数据在缓存中不存在,则说明缓存未命中。可以使用 TTL(生存时间)等控制措施根据相应情况令数据过期。另外还要考虑该缓存环境是否需要具有高可用性,如果需要,则可以通过 Redis 等内存中引擎来实现。在某些情况下,内存中的层可以用作独立的数据存储层,而不必从主位置缓存数据。在这种情况下,您必须为驻留在内存中引擎中的数据定义适当的 RTO(恢复时间目标 – 从中断中恢复所需的时间)和 RPO(恢复点目标 – 在恢复中捕获到的最后一时间点或事务),以便确定这是否合适。可以应用不同内存中引擎的设计策略和特性来满足大多数 RTO 和 RPO 要求。

相关文章