什么是内存缓存以及它是如何工作的?

问题描述

我正在阅读有关 Redis 和 Apache ignite 的文章,它们都是内存缓存,也充当分布式缓存。我想知道什么是内存缓存?数据存储在哪里?在使用应用程序的本地系统的内存中还是在托管应用程序的服务器的内存中?内存缓存是如何工作的? 例子: 具有 ignite 缓存的应用程序正在 x IP 地址上运行,而我正在 y IP 地址上使用该应用程序,因此缓存将存储在 x IP 地址系统或 y IP 地址系统的内存中?

还有,我们说分布式缓存是什么意思?

解决方法

内存缓存可以被认为是一个缓存,它具有数据库的性能关键信息/数据,在应用程序中的请求之间共享。直接访问数据/内存,而不是通过其他机制,使数据库相关操作能够高效运行,进而提高系统的吞吐量和响应能力。

一般来说,在基于部署模型的分布式缓存的情况下,缓存内存可以以分布式的方式存在于数据库和应用程序之间。该缓存可以分布在节点之间,并基于分布式哈希表和数据类型进行操作。访问各个节点缓存中的数据,可以依次应用内存缓存逻辑来带来性能优化。

以下是如何使用 Amazon Elastic Cache

实现的示例

enter image description here

如您所见,Amazaon Elastic Cache 解决方案在每个节点中运行一个缓存引擎,该引擎实现了缓存协议/算法,而 Amazon Elastic Cache 可以在特定节点中支持 6 到 67 GB 的缓存大小。每个缓存节点在创建时都会分配一个 DNS 名称,您需要将节点的 DNS 名称配置到正在使用的客户端库中。一旦您的应用程序向集群调用 Put 或 Get 请求,库将使用哈希函数通过算法选择一个特定节点,该节点应将数据分散到节点中,并帮助从节点获取相同的数据。

,

分布式缓存partitions/shards您的数据跨多个集群节点。这允许利用整个集群的内存和 CPU 资源,并对请求进行负载平衡。一个节点是一个可以在你的物理服务器、虚拟机上运行的进程,或者只是一个 Kubernetes pod。 This article 可能有助于了解基础知识。

通常,应用程序需要知道至少一个集群节点的 IP 地址才能打开连接。连接打开后,您将使用类似于关系数据库的方式使用集群 - 只需发出 SQL 请求、计算任务并执行其他操作。

此外,请观看 In-Memory Computing Essentials for Software Engineers 录音,其中涵盖了您的大部分问题并向您介绍了 Ignite 的基本功能。不时安排 free instructor-led training 讨论此主题。