我想使用 memcached
http://www.danga.com/memcached/
我已经通过yum install memcached
但是现在我需要连接到 PHP,并且有一个名为 memcache 的扩展和一个名为 memcached 的扩展?啊啊啊啊
http://us3.php.net/manual/en/book.memcache.php
http://us3.php.net/manual/en/book.memcached.php
有人可以在这里指出我正确的方向..哪一个会起作用?
另外,即使它是本地的,我是否需要打开任何端口才能工作?运行它后,我尝试 telnet 127.0.0.1 11211 并且连接被拒绝。
您可能希望查看PHP 客户端比较。
简短版本:它们都可以工作,在大多数情况下,任何一个都可以。
关于另一个问题:是的,你应该能够做到
telnet 127.0.0.1 11211
。很少有防火墙会阻止 localhost 与自身通信。如果您无法连接,请通过执行验证 memcached 是否确实在运行ps auxwww | grep memcached
,这还将显示用于启动 memcached 的命令行参数。其中一个参数应该是-p 11211
或另一个端口号。查看man memcached
所有可能参数的含义。正如 Nate 的链接所暗示的,两者都非常适合简单的使用。但是,memcached 支持更多功能,可让您充分利用 memcached 的性能。二进制协议减少了客户端和服务器之间需要发送的数据量。Multigets 和 multisets 允许您同时获取/设置多个项目。如果你发现你需要更多的 memcache 功能,memcached 是更好的模块。libmemcached 的使用表明该库本身可能比仅 PHP 的版本更优化。
与 memcache 相比,Memcached 是一个更新的模块,仅在 8 个月前发布。如果您需要针对旧版本的 PHP,那么您只能真正使用 memcache。
简短的回答:任何一个都是您正在寻找的,但我的第一选择是 memcache(您列出的第一个),纯粹基于其正确使用命名法。
现在我是如何得出这个结论的:
这是命名约定的快速背景资料(对于那些不熟悉的人),它解释了提问者的挫败感:对于许多 *nix 应用程序,执行后端工作的部分称为“守护进程”(想想 Windows 中的“服务”-土地),而接口或客户端应用程序是您用来控制或访问守护程序的。守护程序通常与客户端命名相同,并附加字母“d”。例如,“imap”将是一个连接到“imapd”守护进程的客户端。
当您阅读memcache 模块的介绍时, memcache显然遵守了这种命名约定(请注意此摘录中 memcache 和 memcached 之间的区别):
这里的挫败感是由 PHP 扩展的作者造成的,该扩展名为memcached ,因为它与名为memcached的实际守护进程共享相同的名称。另请注意,在memcached(php 模块)的介绍中,提到了libmemcached,它是模块用来访问 memcached 守护进程的共享库(或 API):
总而言之,两者在功能上是相同的,但它们只是有不同的作者,而且一个人的名字比另一个人更合适。
更老、更臭的那个之所以被称为
php-memcache
是因为那似乎是最合适的名字。由 Digg 的人们独立开发的更新、更好的版本改为php-memcached
为了消除歧义而命名。仅根据名称的正确性建议您选择其中一个的人确实没有提供技术建议的业务。
最近使用了 php-memcache,我不得不将您指向 php-memcached。
这是我头脑中的几个原因..
1) 没有 getErrorCode() 或等效方法,因此如果 get() 返回 FALSE,您将不知道这是因为存储在 memcache 中的值是 false,还是存在某种问题。
2) 其用于一致散列的散列算法似乎与其他实现不同,例如许多基于 libmemcached 构建的客户端库。这意味着,如果您想使用具有多种语言的同一个 memcache 集群,您可能会遇到问题,您将使用 PHP 客户端存储一个值,而其他客户端将找不到它。
截至今天,两者都有问题。PECL/memcache 是旧的和可靠的,除了一些已经过时的例外。PECL/memcached 1.x 充其量只是测试版。有些函数不处理数字键,它在使用持久连接时会泄漏连接。一些(全部?)正在 GitHub 中修复,并将在 2.x 的某个时间点发布,但不是今天。有关更详细的评论,请参阅http://brian.moonspot.net/php-memcached-issues
我正在写一本书“专家 PHP 和 MySQL”。关于差异,我写了几乎相同的东西。我推荐的是PECL/memcached。#1 - 它包含一个功能齐全、性能良好的 C 库 #2 - 它是最近维护的。#3 - 更多功能。没有贬低 PECL/memcache。
我在使用 Drupal 6 和 php-pecl-memcached 时遇到了一些非常严重的问题,其中每次调用的响应时间最多延迟 5 毫秒,并且会导致一个特定站点创建的调用比更改为 php-pecl-memcached 之前多 5 倍. 更改为 php-pecl-memcache 解决了所有问题;延迟和额外的呼叫。
这个答案只是为了帮助那些使用 Drupal 6 和可能使用 Drupal 7 的人。
还有其他 memcached 客户端,请参阅http://code.google.com/p/memcached/wiki/Clients
从网上剪切和粘贴:
http://www.php.net/manual/en/intro.memcache.php
http://www.php.net/manual/en/intro.memcached.php
http://pecl.php.net/package/memcached “通过 libmemcached 库与 memcached 交互的 PHP 扩展” 此扩展使用 libmemcached 库提供与 memcached 服务器通信的 API。https://github.com/andreiz/php-memcached
http://pecl.php.net/package/memcache "memcached extension" Memcached 是一个缓存守护进程,专为动态 Web 应用程序设计,通过将对象存储在内存中来减少数据库负载。此扩展允许您通过方便的 OO 和过程接口使用 memcached。
http://code.google.com/p/memcached/wiki/PHPClientComparison