什么时候用Memcache代替Memcached?

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

似乎memcache已经存在了更长的时间,不需要额外的库,甚至对于windows也有预编译的二进制文件 !我认为这是目前更好的选择。然而,作为memcached(服务器)的新手,我不确定memcached (php)中是否有一些超级重要的特性值得额外的麻烦。

145006 次浏览

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

之后的版本仍然很低,0.2,但我都用过,没有遇到大问题,所以我会去memcached,因为它是新的。

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

  1. 中科院的令牌。这让我的生活变得轻松多了,而且是一个简单的预防陈旧数据的系统。无论何时从缓存中提取内容,都可以接收一个cas令牌(一个双数字)。您可以使用该令牌保存更新后的对象。如果在线程运行时没有其他人更新该值,则交换将成功。否则将创建一个新的cas令牌,您将被迫重新加载数据并使用新令牌再次保存数据。
  2. 读完回调是自切片面包以来最好的东西。它简化了我的大部分代码。
  3. getDelayed ()是一个很好的特性,它可以减少脚本等待服务器返回结果的时间。
  4. 虽然memcached服务器应该是非常稳定的,但它并不是最快的。您可以在新的客户机上使用二进制协议而不是ASCII。
  5. 当你将复杂的数据保存到memcached时,客户端过去总是对值进行序列化(这是很慢的),但现在有了memcached客户端,你可以选择使用igbinary。到目前为止,我还没有机会测试这能带来多大的性能提升。

所有这些点都足以让我切换到最新的客户端,并且可以告诉你它的工作就像一个魅力。libmemcached库上有外部依赖,但已经设法在Ubuntu和Mac OSX上安装了它,所以到目前为止没有问题。

如果您决定更新到更新的库,我建议您更新到最新的服务器版本,因为它也有一些不错的功能。你需要安装libevent来编译它,但在Ubuntu上这不是太麻烦。

到目前为止,我还没有看到任何框架采用新的memcached客户端(尽管我没有跟踪它们),但我认为Zend很快就会加入。

更新

Zend Framework 2有一个Memcached适配器,可以在在这里中找到

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

这是2013年。忘掉2009年的评论吧。同样,如果您正在运行严重的流量负载,甚至不要考虑如何使用基于windows的memcache。 当处理一个非常大的规模(500+前端web服务器)和20+后端数据库服务器和副本(mysql &mssql mix),一个memcached服务器群(12台服务器一组)支持多个高容量OLTP应用程序,每秒响应25K ~ 40K mc->get调用。这些调用是那些必须到达数据库的调用

恕我直言,memcached的使用为新的DB服务器节省了大量的资本支出。许可证以及大型商业设计的支持合同。