小编典典

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

all

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

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


阅读 116

收藏
2022-04-11

共1个答案

小编典典

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

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

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

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

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

更新

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

2022-04-11