设为首页 收藏本站
查看: 983|回复: 0

[经验分享] memcached的PHP扩展之PECL/memcache与PECL/memcached区别

[复制链接]

尚未签到

发表于 2015-8-31 10:36:41 | 显示全部楼层 |阅读模式
  首先明确下无论memcache还是memcached,所指的系统都是memcached内存对象缓存系统  说到memcache就是服务器跑的服务进程是memcached服务
截至目前发文时memcached版本为1.4.5
下载地址:http://memcached.googlecode.com/files/memcached-1.4.5.tar.gz
如何安装可参考之前的文章:http://www.niutian365.com/blog/article.asp?id=51
  memcache的PHP扩展有两个:
  一.pecl/memcache  大概04年出现,按照memcached的接口实现的
地址:http://pecl.php.net/package/memcache
使用文档:http://cn.php.net/memcache
pecl/memcache 2.*系列的版本最新stable版为2.2.6,pecl/memcache 3.*版本最新为3.0.5beta版
pecl/memcache安装请参考:http://www.niutian365.com/blog/article.asp?id=51
  二.pecl/memcached 大概09年出现
地址:http://pecl.php.net/package/memcached
使用文档:http://cn.php.net/memcached
pecl/memcached 1.*系列的版本最新stable版为1.0.2,2011-03-13则提交了2.0.0b1版
另外php安装该扩展需要先安装libmecached:http://launchpad.net/libmemcached/1.0/0.49/+download/libmemcached-0.49.tar.gz
pecl/memcached 安装请参考:http://www.niutian365.com/blog/article.asp?id=465
  三.具体区别
参考:http://code.google.com/p/memcached/wiki/PHPClientComparison
  1. pecl/memcache会自动转换无效的key为有效。pecl/memcached则会返回false。
   2. 你无须对对象、数组进行序列化,这两个客户端都会自动完成序列化的过程。
   3. CAS:Memcached于1.2.4版本新增CAS(Check and Set)协议类同于Java并发的CAS(Compare and Swap)原子操作,处理同一item被多个线程更改过程的并发问题。
      在Memcached中,每个key关联有一个64-bit长度的long型惟一数值,表示该key对应value的版本号。这个数值由 Memcached server产生,从1开始,且同一Memcached server不会重复。在两种情况下这个版本数值会加1:1、新增一个key-value对;2、对某已有key对应的value值更新成功。删除 item版本值不会减小。参考:http://langyu.javaeye.com/blog/680052
   4. Consistent Hashing:Memcached分布式的一种策略,比余数策略要好很多,具体原理可以参考这里,在pecl/memcache 3.0.0之前,默认的策略为stardard,即余数策略,在3.0.0之后则默认为consistent。可以通过php.ini里修改memcache.hash_strategy = consistent来指定。
  从pecl/memcache的3.0.0开始,对原先许多不支持的特性进行支持,具体可以参考changelog,对二进制协议的支持可以通过memcache.protocol = {ascii, binary}来设置,并且修改了默认的设置:
  memcache.hash_strategy = consistent(在3.0.0之前默认是stardard,即余数策略)
  memcache.chunk_size = 32768(在3.0.0之前默认是8192,说明中也提到这个参数指数据传输块大小,这个值越小网络I/O次数越多,如果发现莫名的速度降低, 可以尝试将此值调至32768,所以在3.0.0中干脆直接默认值就是32768了)
  当然pecl/memcache 3.0.*还没有stable版本发布,所以相比较而言,pecl/memcached 1.0.2 stable版就比pecl/memcache 2.2.6 stable版功能要强大些(二进制协议和CAS的支持),但是pecl/memcached 1.0.2 stable版也有一些不支持的功能,比如不支持发生错误时(对用户)透明的转移到其他服务器(即memcache.allow_failover ),也不支持持久连接等等。
  在社区看到有人讨论,pecl/memcached有项功能getServerByKey,可以返回key所映射的服务器,这对于调试很是方便。
  现在在pecl/memcache 3.0.5 的changelog中也加入了类似的功能MemcachePool::findServer(key)
  中文版请参考:http://www.dreamwing.org/php/php-extension-of-memcached.html
  
本文转载自『北漂石头的博客』
http://www.niutian365.com/blog/

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-106709-1-1.html 上篇帖子: memcache 服务端安装与python客户端调用 折腾记 下篇帖子: hibernate 配置memcache作为二级缓存(Spring、Hibernate集成在applicationContext.xml中)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表