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

似乎 memcache 已经存在的时间更长了,不需要额外的库,甚至对于 windows 都有 pre-compiled binaries !我认为这将是目前更好的选择。但是,作为 memcached(服务器)的新手,我不确定 memcached(php)中是否有一些非常重要的功能值得额外的麻烦。

最佳答案

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

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

  • 所有这些点都足以让我切换到最新的客户端,并且可以告诉您它的效果非常好。存在对 libmemcached 库的外部依赖,但仍然设法在 Ubuntu 和 Mac OSX 上安装它,所以到目前为止没有问题。

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

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

    更新

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

    关于php - 我什么时候应该使用 Memcache 而不是 Memcached?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1442411/

    10-13 02:01
    查看更多