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