什么时候应该使用Memcache而不是Memcached?

时间:2009-09-18 03:07:53

标签: php memcached

似乎PHP有两个名为memcachememcached的memcached库。有什么区别,你怎么知道使用哪一个?一个过时了吗?似乎memcached提供了更多方法,所以我认为这意味着它具有最大的开发 - 但它似乎也需要external C/C++ libraries所以我不确定我是否可以安装它。

似乎memcache已存在更长时间,不需要额外的库,并且甚至窗口都有pre-compiled binaries!我认为这将是现在更好的选择。然而,作为memcached(服务器)的新手,我不确定memcached(php)中是否有一些非常重要的特性使它值得额外麻烦。

4 个答案:

答案 0 :(得分:245)

Memcached client库刚刚发布稳定版。它被 digg (由Andrei Zmievski为digg开发,现在不再使用digg)使用,并且比旧版的memcache客户端实现了更多memcached protocol。 memcached最重要的功能是:

  1. Cas tokens。这使我的生活变得更加轻松,并且是一个简单的过时数据预防系统。每当你从缓存中提取某些内容时,你就可以收到一个cas令牌(一个双号)。您可以使用该令牌保存更新的对象。如果在您的线程运行时没有其他人更新该值,则交换将成功。否则会创建一个较新的cas令牌,您将被迫重新加载数据并使用新令牌再次保存。
  2. 自切片面包以来,阅读callbacks是最好的选择。它简化了我的大部分代码。
  3. getDelayed()是一个很好的功能,可以减少脚本等待结果从服务器返回的时间。
  4. 虽然memcached服务器应该非常稳定,但它并不是最快的。您可以使用二进制协议而不是ASCII与较新的客户端。
  5. 每当您将复杂数据保存到memcached中时,客户端总是会对值进行序列化(这很慢),但现在使用memcached客户端,您可以选择使用igbinary。到目前为止,我还没有机会测试这可以带来多少性能提升。
  6. 所有这些要点足以让我切换到最新的客户端,并且可以告诉你它就像一个魅力。有libmemcached库的外部依赖,但仍设法在Ubuntu和Mac OSX上安装它,所以到目前为止没有任何问题。

    如果您决定更新到较新的库,我建议您更新到最新的服务器版本,并且它也有一些不错的功能。您需要安装libevent才能进行编译,但在Ubuntu上并没有太多麻烦。

    到目前为止,我还没有看到任何框架接收新的memcached客户端(虽然我没有跟踪它们),但我认为Zend很快就会出现。

    更新

    Zend Framework 2有一个Memcached适配器,可以找到here

答案 1 :(得分:11)

使用Windows时,比较缩短:memcache似乎是唯一可用的客户端。

答案 2 :(得分:9)

这是2013年。忘记2009年的评论。同样,如果您正在运行严重的流量负载,甚至不考虑如何使用基于Windows的内存缓存。 当处理非常大规模(500多个前端Web服务器)和20多个后端数据库服务器和复制程序(mysql& mssql mix)时,一组memcached服务器(组中的12个服务器)支持多个高容量OLTP应用程序应答25K~40K mc->每秒接听电话。这些调用是 NOT 必须访问数据库的调用。

恕我直言,这次使用memcached为新数据库服务器提供了SERIOUS $$$,$$$节省资金。许可证以及大型商业设计的支持合同。

答案 3 :(得分:7)

Memcached是一个较新的API,它还提供了memcached作为会话提供程序,如果你有一个服务器场,这可能会很棒。

版本仍然非常低0.2但是我已经使用了两个并且我没有遇到重大问题,所以我会去memcached,因为它是新的。