我是学习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真正的典型用法).
phi*_*hag 28
memcached服务器是一个程序,它管理memcached存储的数据(不要与机器混淆,也可以称为服务器).从理论上讲,它可以在任何计算机上运行.但是,它通常在运行主应用程序的同一台机器上运行.
然后,应用程序使用其memcached客户端与memcached服务器通信并请求缓存内容.这比从传统数据库查询数据要快