memcached - 什么是 memcached 服务器

标签 memcached

我是学习 memcached 的初学者。 memcached 服务器最让我困惑。我可以像网络服务器一样将其视为单台服务器计算机吗?我也对 memcached 服务器和客户端之间的关系感到困惑,它们位于不同的计算机上吗?

最佳答案

我同意@phihag 回答的大多数事情,但我必须澄清一些事情。

Memcached 根据一个键(phihag 称之为 id,不要与数据库 id 混淆)存储数据。数据可以是各种大小的,因此您可以存储少量数据(例如从数据库中提取的 1 条记录),也可以存储大量数据(例如数百条记录或整个完成的 html 页面)。

内存缓存 不是 通常与应用程序服务器在同一台机器上使用,这是因为它被设计为通过 TCP 使用(如果它被设计为在同一台服务器上工作,它将可以通过套接字访问)并且它被设计为一个池服务器。

池化部分很有趣——你可以让 10 台机器运行 Memcached,每台机器为此分配最多 10GB 的内存。 10*10 = 100GB 内存空间。

当您将一个值写入 Memcached 时,只有一个(随机或通过某些算法)服务器存储它。当您尝试从 Memcached 读取值时,只有存储它的服务器才会将其发送给您。

确实是你可以 将所有数据库/内存缓存/应用程序/文件服务器放在同一台机器上,通常你会为你的开发沙箱做这件事。但你也可以 将每个放在单独的机器上以及两者的任何其他组合上。

如果您只需要一个 Memcached 服务器,您可能可以将它与应用程序代码托管在同一台机器上。

如果您开始使用前端缓存服务器(例如 varnish)或将 NginX 配置为前端缓存服务器,则必须配置一些 Memcached 服务器来存储这些前端缓存服务器正在缓存的数据。

如果您将数据库分布到多台服务器并将文件服务器分布到 CDN 中,这意味着您的应用程序在短时间内处理大量数据,因此您将需要大量 RAM 空间,而这些空间是单个服务器无法提供的应用服务器。

由于为 Memcached 服务器扩展内存池就像将新服务器的 IP 添加到列表中一样简单,因此您将像在许多服务器中一样进行水平扩展(这是 Memcached 的真正典型用途)。

关于memcached - 什么是 memcached 服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10765897/

相关文章:

mysql - 尝试从 memcached 检索过期对象时出错

c - 对 `memcached_exist' 的 undefined reference

java - 用于 EC2 实例中 session 管理的 Memcached session 管理器

php - 用于 php 的 Memcache 扩展 - xampp windows 不工作

google-app-engine - Go有哪些方式可以方便地将数据转换成字节或字符串

java - 将 Memcache 与 GAE、Java 和 JDO 事务结合使用

php - Laravel 中如何避免缓存碰撞?

ruby - 有没有人得到一个在 Windows 上工作的 ruby​​ memcached 客户端?

linq-to-sql - 无论如何要为 Memcached 序列化 linq 对象吗?

django docker-compose --> memcached 不工作