用好数据库缓存的几个策略

超级欧派课程 2024-03-08 00:55:34

数据库缓存是一个你不能忽视的两本增效技术。

它甚至可以掩盖你的数据库的缺点,并帮助你的应用程序发挥出最大的潜力。

但是,数据库缓存并不是一种单一的技术。

你可以选择一系列的策略,每种策略都有稍微不同的影响。

选择正确的策略是很重要的。

[1] 旁路缓存策略

在这种策略中,缓存位于数据库的旁边。

其工作原理如下:

- 当有数据请求时,应用程序首先检查缓存

- 如果缓存命中,应用程序就从缓存中返回

- 在缓存未命中的情况下,应用程序查询数据库并返回数据

- 应用程序还将未命中的数据存储在缓存中以供未来请求

优点:非常适合读取负载重的工作负载。此外,由于缓存失效不会使系统瘫痪,所以具有更好的弹性。

缺点:缓存和数据库之间可能存在潜在的不一致性。

[2] 读取穿透策略

缓存位于应用程序和数据库之间。

下面是读取穿透的过程:

应用程序会在任何读取请求中去查找缓存。如果缓存命中,数据从缓存中返回,流程结束。如果缓存未命中,则缓存从数据库中获取未命中的数据并将其返回给应用程序。

优点:应用程序不必担心从数据库或缓存中获取数据,缓存会处理。

缺点:缓存和数据库之间可能存在潜在的不一致性,并且每一次全新的读取请求都需要去查询数据库。

[3] 围绕写策略

与旁路缓存类似,但增加了写操作的相关上下文。

在这种策略中,所有的写入操作都会直接到数据库,而读取的数据则到缓存中。

对于缓存未命中,应用程序将从数据库中读取并更新缓存以供下次使用。

这非常适用于只写入一次且很少更新的数据(比如博客文章或静态网站)。

[4] 写入穿透策略

写入穿透试图解决读取性能问题。

与其写入数据库,应用程序首先写入缓存。

然后,缓存会立即写入数据库。

这里的 "立即" 是关键。

优点:缓存总是有任何写入的数据。新的读取请求不会在缓存从主数据库请求数据时出现延迟。

缺点:额外的写入延迟,因为数据必须先进入缓存,然后才能进入数据库。

[5] 回写策略

它是写入穿透策略的一种变体。

有一个关键的不同点…

在回写策略中,应用程序直接写入缓存。

然而,缓存并不会立即写入数据库,而是在一段延迟之后。

优点

如果你有大量的写入请求,缓存的负担会减少。数据库的请求是批量的,从而可以提高整体的写入性能。

缺点

如果缓存故障,可能存在数据丢失的风险。

这时候,你可能在想,所有这些策略听起来都很混乱,很难记住。

我完全同意你的想法。

因此,我制作了一个快速参考表,这可以帮助你快速查看这些策略。

希望这个总结能帮到你:

那么,你使用数据库缓存吗?

如果使用的话,你最喜欢的数据库缓存策略是哪一种?

0 阅读:0

超级欧派课程

简介:感谢大家的关注