首页 > 其他分享 >缓存策略

缓存策略

时间:2024-08-29 10:48:07浏览次数:10  
标签:缓存 策略 Read 数据源 Cache Through 数据

我们都知道,提高系统性能的最简单也最流行的方法之一其实就是使用缓存。我们引入缓存,相当于对数据进行了复制。每当系统数据更新时,保持缓存和数据源(如 MySQL 数据库)同步至关重要,当然,这也取决于系统本身的要求,看系统是否允许一定的数据延迟。 在这篇文章里,我想给你们介绍最常见的几种缓存策略、它们的优缺点以及使用场景,分别是: •Cache-Aside •Read-Through •Write-Through •Write-Behind 请跟随我一起来看看吧。 Cache-Aside 策略 Cache-Aside (预留缓存)可能是最常用的缓存策略。在这种策略下,应用程序(Application)会与缓存(Cache)和数据源(Data Source)进行通信,应用程序会在命中数据源之前先检查缓存。如下图所示:  

 

Cache-Aside   我们来看一次请求数据的过程: •首先,应用程序先确定数据是否保留在缓存中;•如果数据在缓存中,也即 Cache hit ,称作“缓存命中”。数据直接从缓存中读取并返回给客户端应用程序;•如果数据不在缓存中,也即 Cache miss,称作“缓存未命中”。应用程序会从数据存储的地方,如 MySQL 数据源中读取该数据,并将数据存储在缓存中,然后将其返回给客户端。 Cache-Aside 策略特别适合“读多”的应用场景。使用 Cache Aside 策略的系统可以在一定程度上抵抗缓存故障。如果缓存服务发生故障,系统仍然可以通过直接访问数据库进行操作。 然而,这种策略并不能保证数据存储和缓存之间的一致性,需要配合使用其它策略来更新或使缓存无效。另外,首次请求数据时,总是会导致缓存未命中,这种情况下需要额外的时间来将数据加载到缓存中。为了解决这个问题,开发人员可以通过手动触发查询操作来对数据进行“预热”。 Read-Through 策略 在上面的 Cache-Aside 策略中,应用程序需要与缓存和数据源“打交道”,而在 Read-Through 策略下,应用程序无需管理数据源和缓存,只需要将数据源的同步委托给缓存提供程序 Cache Provider 即可。所有数据交互都是通过抽象缓存层完成的。  

 

Read-through   在进行大量读取时,Read-Through 可以减少数据源上的负载,也对缓存服务的故障具备一定的弹性。如果缓存服务挂了,则缓存提供程序仍然可以通过直接转到数据源来进行操作。 然而,首次请求数据时,总是会导致缓存未命中,并需要额外的时间来将数据加载到缓存中,相信大家都知道怎么处理了吧,还是“缓存预热”的老套路。 Read-Through 适用于多次请求相同数据的场景。这与 Cache-Aside 策略非常相似,但是二者还是存在一些差别,这里再次强调一下: •在 Cache-Aside 中,应用程序负责从数据源中获取数据并更新到缓存。•而在 Read-Through 中,此逻辑通常是由独立的缓存提供程序支持。 Write-Through 策略 Write-Through 策略下,当发生数据更新(Write)时,缓存提供程序 Cache Provider 负责更新底层数据源和缓存。缓存与数据源保持一致,并且写入时始终通过抽象缓存层到达数据源。  

 

Write-Through   实际上,由于需要将数据同步写入缓存和数据源,因此数据写入速度较慢。但是,当与 Read-Through 配合使用时,我们将获得 Read-Through 的所有好处,并且还可以获得数据一致性保证,从而使我们免于使用缓存失效技术。 Write-Behind 策略 如果没有强一致性要求,我们可以简单地使缓存的更新请求入队,并且定期将其 flush 刷新到数据存储中。  

 

Write-Behind   也就是说,Write-Behind 在数据更新时,只写入缓存。优点是数据写入速度快,适用于繁重的写工作负载。与 Read-Through 配合使用,可以很好地用于混合工作负载,最近更新和访问的数据总是在缓存中可用。 它可以抵抗数据源故障,并可以容忍某些数据源停机时间。如果支持批处理或合并,则可以减少对数据源的总体写入,从而减少了负载并降低了成本。 但是,一旦更新后的缓存数据还未被写入数据源时,出现系统断电的情况,数据将无法找回。

标签:缓存,策略,Read,数据源,Cache,Through,数据
From: https://www.cnblogs.com/jeanpwest/p/18386173

相关文章

  • 全面解读敏捷企业架构的落地策略,助力企业实现数字化转型
    敏捷企业架构如何推动企业转型成功在当今迅速变化的商业环境中,企业面对的最大挑战之一是如何快速适应市场变化并保持竞争力。传统的企业架构虽然在稳定性和可控性方面具备优势,但在面对数字化转型的浪潮时,显得僵化且反应迟缓。敏捷企业架构通过引入敏捷方法的灵活性和迭代性,为......
  • 数据分页的艺术:SQL中的高效实现策略
    数据分页的艺术:SQL中的高效实现策略在处理大量数据时,一次性显示所有记录不仅效率低下,而且用户体验差。因此,分页显示成为了Web和应用程序开发中的一项基本需求。SQL作为数据查询语言,提供了多种实现分页的方法。本文将详细探讨如何在不同数据库系统中使用SQL实现数据的分页显......
  • 缓存介绍
    从业务层面上的堆数据库下性能瓶颈的解决方案:分库分表、读写分离程序员修神之路--略懂数据库集群读写分离而已缓存缓存(Cache):本质是数据交换的一段缓冲区,也可以称为一种存储数据的组件,主要用于减小数据交换双方速度不匹配的问题。缓存在计算机世界里是一个常见并且不可忽......
  • YOLOv9改进策略【损失函数篇】| Slide Loss,解决简单样本和困难样本之间的不平衡问题
    一、本文介绍本文记录的是改进YOLOv9的损失函数,将其替换成SlideLoss,并详细说明了优化原因,注意事项等。SlideLoss函数可以有效地解决样本不平衡问题,为困难样本赋予更高的权重,使模型在训练过程中更加关注困难样本。若是在自己的数据集中发现容易样本的数量非常大,而困难样本......
  • YOLOv9改进策略【注意力机制篇】| 引入MobileNetv4中的Mobile MQA,提高模型效率
    一、本文介绍本文记录的是基于MobileMQA模块的YOLOv9目标检测改进方法研究。MobileNetv4中的MobileMQA模块是用于模型加速,减少内存访问的模块,相比其他全局的自注意力,其不仅加强了模型对全局信息的关注,同时也显著提高了模型效率。文章目录一、本文介绍二、MobileMQA......
  • YOLOv9改进策略【卷积层】| 利用MobileNetv4中的UIB、ExtraDW优化RepNCSPELAN4
    一、本文介绍本文记录的是利用ExtraDW优化YOLOv9中的RepNCSPELAN4,详细说明了优化原因,注意事项等。ExtraDW是MobileNetv4模型中提出的新模块,允许以低成本增加网络深度和感受野,具有ConvNext和IB的组合优势。可以在提高模型精度的同时降低一定量的模型参数。文章目录一、......
  • 【MySQL数据库管理问答题】第10章 选择备份策略
    目录1.请详细说明热备、温备和冷备的特点和不同。2.在MySQL中支持的备份类型有哪几种,分别予以说明。3.执行逻辑备份要具备哪些条件,其优缺点在哪。4.物理备份一般是用来满足什么样的数据库维护需求?5.基于快照的备份能否用来进行数据库损坏时的恢复,请说明理由。6.......
  • (十九)transformers解码策略
    文本生成策略文本生成对于许多NLP任务至关重要,例如开放式文本生成、摘要、翻译和更多。它还在各种混合模态应用程序中发挥作用,这些应用程序将文本作为输出,例如语音到文本以及vision-to-text。一些可以生成文本的模型包括GPT2、XLNet、OpenAIGPT、CTRL、TransformerXL、XLM......
  • 防范SSL协议降级攻击:Nginx负载均衡的安全策略
    引言在网络安全领域,SSL/TLS协议降级攻击是一种常见的攻击手段,攻击者通过诱导客户端使用较低版本的SSL/TLS协议,利用已知的安全漏洞来截取或篡改通信内容。Nginx作为广泛使用的Web服务器和反向代理,提供了多种配置选项来防范此类攻击。本文将详细介绍SSL协议降级攻击的原理、N......
  • 强化Nginx负载均衡的请求保护:策略与实践
    引言Nginx作为流行的高性能HTTP服务器和反向代理,提供了丰富的功能来实现负载均衡和请求保护。请求保护是指一系列措施,用于防止恶意请求对服务器造成压力过大、资源耗尽甚至服务中断。本文将深入探讨如何在Nginx中实现请求的负载保护,确保Web服务的稳定性和安全性。请求负载......