什么是MemCahce及其内部运作方式?我在YouTube上看到的视频很少,但其中不包含详细信息

问题描述 投票:0回答:2

我正在学习系统设计原理以及许多HLD和LLD。在其中一种设计中,提到了FB是用于生成新闻提要的MemCache等。有人可以帮助我或提供任何资源链接以正确理解它吗?

architecture memcached system-design
2个回答
0
投票

Memcache是​​内存中的键值存储。由于它是纯内存的,因此速度非常快。但是它没有持久性,如果重新启动,所有数据将丢失。大多数情况下,它用于存储生成成本很高的信息(例如,复杂的SQL查询或动态网页),以便在再次请求时可以更快地检索数据。从这个意义上讲,它是一个通用缓存。此外,它可以通过并行使用多个内存缓存服务器来水平扩展。

我建议您看看https://memcached.org/。该网站比我解释得更详细,您可以下载您感兴趣的源代码。


0
投票

在您了解Memcached是什么之前,了解缓存非常重要。我不是自己写这个,而是引用https://aws.amazon.com/caching/

中的以下文本

什么是缓存?在计算中,缓存是高速数据存储层,用于存储数据的子集,通常在 性质,以便将来对这些数据的请求能够更快地得到满足 通过访问数据的主存储位置来实现。 缓存使您可以有效地重用以前检索的或 计算数据。

缓存如何工作?缓存中的数据通常存储在快速访问硬件中,例如RAM(随机访问存储器),并且可能 与软件组件关联使用。缓存的主要对象 目的是通过减少需求来提高数据检索性能 访问底层的较慢的存储层。

为了提高速度而牺牲容量,高速缓存通常存储以下内容的子集: 暂时的数据,与通常是数据的数据库相反 完整且耐用。

例如想想一个电子商务应用程序,它具有面向客户的UI,许多客户使用该UI浏览产品并进行一些交易。由于产品有限,因此客户一次又一次访问相同的产品。如果对于这些访问中的每一次,都是从数据库中获取数据,那么性能将非常糟糕。为了减轻来自数据库的负载,缓存用于存储请求的数据,以便当用户请求某些信息时,应用程序将首先查看缓存,如果在缓存中找到该应用程序,则该缓存将不存在。到它的数据库;而是从缓存中获取数据并提供服务。如果在缓存中找不到数据,则应用程序将尝试从数据库中获取数据,并且根据配置,数据也可能会写入缓存中,以便可以从服务器中请求下一个相同数据的请求。缓存自身,而不是去数据库。应用程序确保在数据库中更改缓存时使缓存无效并刷新缓存中的数据。

您可以从https://en.wikipedia.org/wiki/Memcached中找到,Memcached是一个通用的分布式内存缓存系统,该系统于2003年开发,并很快被广泛用作减轻数据库负载的一种方法。它是一种网络感知的缓存,将键值数据存储在RAM中。因此,它不是持久性存储,并且如果运行它的计算机崩溃,则数据将丢失。

您可以通过访问我上面提到的链接来了解更多信息。您也可以访问https://memcached.org/以获取可能需要的其他信息。

© www.soinside.com 2019 - 2024. All rights reserved.