什么是memcached服务器

All*_*Jee 42 memcached

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

Mih*_*ncu 66

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

Memcached根据密钥存储数据(phihag将其称为id,不要与数据库ID混淆).数据可以是各种大小的,因此您可以存储小位(例如从数据库中提取的1条记录),或者您可以存储大量数据(如数百条记录或整个完成的html页面).

Memcached 通常不在与应用程序服务器相同的机器上使用,原因是因为它被设计为通过TCP使用(如果它被设计为在同一服务器上工作,它可以通过套接字访问)并且它被设计作为池服务器.

汇集部分很有趣 - 你可以有10台运行Memcached的机器,每台机器为此分配最多10GB的内存.10*10 = 100GB的RAM空间.

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

确实,您可以将所有数据库/ memcached/application/fileserver放在同一台机器上,通常您可以为开发沙箱执行此操作.但是你也可以把它们放在一台单独的机器和两者的任何其他组合上.

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

如果您开始使用诸如清漆之类的前端缓存服务器,或者将NginX配置为前端缓存服务器,则必须配置一些Memcached服务器以存储这些前端缓存服务器正在缓存的数据.

如果将数据库分发到多个服务器和文件服务器到CDN,这意味着您的应用程序会在很短的时间内处理大量数据,因此您需要大量的RAM空间,这些空间无法在一个单独使用应用服务器.

而且,为Memcached服务器扩展内存池就像将新服务器的IP添加到列表一样简单,您将像许多服务器一样进行水平扩展(这是Memcached真正的典型用法).

  • 惊人的答案.这对我很有帮助.谢谢你和@phihag. (2认同)

phi*_*hag 28

memcached服务器是一个程序,它管理memcached存储的数据(不要与机器混淆,也可以称为服务器).从理论上讲,它可以在任何计算机上运行.但是,它通常在运行主应用程序的同一台机器上运行.

然后,应用程序使用其memcached客户端与memcached服务器通信并请求缓存内容.这比从传统数据库查询数据要快

  1. memcached服务器只是将ID映射到值,而不需要扫描整个表
  2. memcached协议更简单.服务器不需要解析SQL等,客户端也不需要编写它.
  3. 由于memcached不需要数据库的可靠性(考虑备份,故障隔离,群集,安全性等),因此它可以在运行应用程序的同一台机器上运行.虽然您可以在运行应用程序的同一台机器上运行数据库,但由于上述原因,这样做是不受欢迎的.

  • 非常感谢!应用程序与其memcached客户端通信,然后客户端要求memcached服务器获取数据.通常,应用程序,memcached客户端和memcached服务器位于同一台计算机上.并且不同的memcached客户端可以根据其协议与在不同机器上运行的其他memcached服务器通信.以上是对的吗? (3认同)