一尘不染

什么时候应该使用Memcache代替Memcached?

php

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

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


阅读 467

收藏
2020-05-26

共1个答案

一尘不染

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

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

所有这些要点足以让我切换到最新的客户端,并且可以告诉您它的魅力十足。libmemcached库存在外部依赖关系,但是仍然可以在Ubuntu和Mac
OSX上安装它,因此到目前为止,还没有问题。

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

到目前为止,我还没有看到任何框架能够使用新的内存缓存客户端(尽管我没有对其进行跟踪),但是我想Zend很快就会加入。

2020-05-26