当前位置: 首页 > 网络应用技术

常见的缓存读写策略

时间:2023-03-08 19:57:46 网络应用技术

  这些缓存策略要求我们根据特定的业务场景选择更合适的。

  缓存模式是一种缓存读取和写作模式,通常使用更多,它更适合阅读请求。CACHEBEAFER DATECT的服务器需要同时维护DB和缓存,并且基于DB的结果。

  让我们看一下此策略模式下的缓存阅读步骤。

  只需画一张图片即可帮助每个人理解写作步骤。

  只需画一张图片即可帮助每个人理解步骤。

  您只是了解上述内容还不够,我们必须了解原则。

  例如,访调员可能会问:“在编写数据的过程中,您可以先删除缓存,然后更新DB?”

  答:这不行!因为这可能会导致数据库(db)和缓存(缓存)数据的不一致。该过程可以简要描述为:

  请求1删除缓存中的数据 - >请求2从db-> request 1读取数据,然后在db中更新a数据。

  当您以这种方式回答时,面试官可能会跟进并问:“在编写数据的过程中,首先更新数据库,然后删除缓存,没有问题吗?”

  答案:从理论上讲,可能仍然存在数据不一致,但是概率很小,因为缓存写作速度比数据库编写速度快得多!

  例如,请求1读取数据,请求2以后再写数据,如果不在缓存中,则数据A也可能导致数据不一致。该过程可以简要地描述为:

  请求1读取数据a->请求2以将更新数据a写入数据库,并将删除缓存1中的A数据删除到缓存中。

  现在,让我们分析缓存模式的缺陷。

  死亡1:第一个请求数据不得在缓存中

  解决方案:您可以提前将热数据放入缓存。

  缺陷2:如果写作操作更频繁,则缓存中的数据将经常删除,这将影响缓存命中率。

  解决方案:

  通过模式的服务器读取/写入/写入缓存是主要数据存储,从其中读取数据并将数据写入其中。高速缓存服务负责读取和写入此数据中的数据库,从而减少了应用程序的职责。

  这个缓存阅读策略合作伙伴还应该发现,在开发过程中它非常罕见。投掷性能的影响是因为我们经常使用的分布式缓存REDIS并不能提供将数据写入DB的功能。

  只需画一张图片即可帮助每个人理解写作步骤。

  只需画一张图片即可帮助每个人理解步骤。

  在缓存模式上实际上封装了读取模式。在缓存模式下,读取请求时,如果缓存中没有相应的数据,则客户端负责将数据写入缓存,并仔细阅读模式由缓存编写以编写缓存本身。这对客户是透明的。

  就像缓存模式一样,读取模式也存在一个问题,即第一个请求数据必须不再是缓存。对于热数据,您可以提前将其放入缓存中。

  在模式后写入和通过模式读/写入非常相似。他们俩都负责缓存服务的缓存和DB的读写。

  但是,两者非常不同:通过读/写入是缓存和数据库的同步更新,而在缓存后写入仅更新缓存,而不是直接更新DB,而是更新DB异步批次。

  显然,这种方法给数据一致性带来了更大的挑战。例如,如果无法异步更新缓存数据,则缓存服务可能会挂起。

  在我们通常的开发过程中,这种策略也非常非常罕见,但这并不意味着其应用方案很小。例如,消息队列中该消息的异步写入磁盘和MySQL的InnoDB缓冲池机制都使用此策略。

  DB在图案背后写的DB的写作表现非常高。它非常适合某些数据经常更改并且数据一致性不那么高的场景,例如视图和喜欢。