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

2022-08-30 06:01:39

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

似乎memcache已经存在了更长的时间,不需要额外的库,并且甚至为Windows预编译了二进制文件!我认为这将是目前更好的选择。但是,作为memcached(服务器)的新手,我不确定memcached(php)中是否有一些非常重要的功能,使其值得额外的麻烦。


答案 1

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适配器,可以在这里找到


答案 2

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


推荐