Memcached客户端库最近刚刚发布为稳定版。它正在被digg使用(由Andrei Zmievski为digg开发,现在不再使用digg),并且比旧的memcache客户端实现了更多的memcached协议。memcached最重要的功能是:
-
卡斯令牌。这使我的生活变得更加轻松,并且是旧数据的简单预防系统。每当您从缓存中提取某些内容时,都可以使用它接收cas令牌(双精度数)。您可以使用该令牌来保存更新的对象。如果在线程运行时没有其他人更新该值,则交换将成功。否则,将创建一个较新的 cas 令牌,并强制您重新加载数据并使用新令牌再次保存它。
- 通读回调是自切片面包以来最好的事情。它简化了我的大部分代码。
-
getDelayed() 是一个不错的功能,可以减少脚本等待结果从服务器返回的时间。
- 虽然memcached服务器应该非常稳定,但它并不是最快的。您可以对较新的客户端使用二进制协议而不是 ASCII。
- 每当您将复杂数据保存到memcached中时,客户端过去总是对值进行序列化(这很慢),但现在使用memcached客户端,您可以选择使用igbinary。到目前为止,我还没有机会测试这可以提高多少性能。
所有这些要点都足以让我切换到最新的客户端,并且可以告诉您它就像一个魅力。对libmemcached库有外部依赖性,但仍然设法将其安装在Ubuntu和Mac OSX上,因此到目前为止没有问题。
如果您决定更新到较新的库,我建议您更新到最新的服务器版本,因为它也具有一些不错的功能。你需要安装libevent才能编译它,但在Ubuntu上,这并不是什么麻烦。
到目前为止,我还没有看到任何框架选择新的memcached客户端(尽管我没有跟踪它们),但我认为Zend很快就会加入。
更新
Zend Framework 2有一个Memcached适配器,可以在这里找到