memcache和memcached的区分

突然间想起来应该把memcache和memcached的这个联系写一下,防止以后忘了,毕竟memcached现在用的不是很多。理解的可能没有路过的大牛理解的深,欢迎提出指导意见,不过请保持文明友好交流。

其实 memcache和memcached都是php的扩展,后者可以在某种意义上认为是前者的进阶产品。先看看两者比较




memcache 是一个原生版本,完全是在 PHP 框架内开发的,支持memcache 是一个原生版本,完全是在 PHP 框架内开发的,支持 OO(面向对象) 和非 OO(面向过程) 两套接口并存,而 memcached 是建立在 libmemcached 的基础上的,只支持 OO 接口。这就意味着在安装 memcache 扩展的时候不要求安装其他的东西,但是在安装 memcached 的时候会要求你安装 libmemcached。别嫌麻烦!因为 libmemcached 是 memcache 的 C 客户端,它具有低内存,线程安全等优点。据说新浪微博之前就全面将 PHP 的 memcache 替换成 PHP 的 memcached,在高并发下,稳定性果断提高。 


综合描述一下:

PHP有两个memcache客户端:php memcache和php memcached。

  1. memcache完全在PHP框架内开发的,提供了memcached的接口,memecached扩展是使用了libmemcached库提供的api与memcached服务端进行交互。
  2. memcache提供了面向过程及面向对象的接口,memached只支持面向对象的接口。
  3. memcached 实现了更多的 memcached 协议。
  4. memcached 支持 Binary Protocol,而 memcache 不支持,意味着 memcached 会有更高的性能。不过memcached 目前还不支持长连接。
再看两者的方法区别:
#memcache:bool Memcache::add ( string $key , mixed $var [, int $flag [, int $expire ]] )
#memcached:public bool Memcached::add ( string $key , mixed $value [, int $expiration ] )

memcache 还得立flag 给这个变量自定义flag状态,你每次set的时候都得设置就很烦。
memcached使用 setOption() 来进行统一设置的(默认开启压缩)。

memcached 比 memcache 支持更多的 memcache 协议,大概也就是说 memcached 有更多的方法,
比如 getMulti() 和 setMulti() 函数非常有用,但是 memcache 并不支持。
比较尴尬的一点是 memcached 和 memcache 对应的服务端名字都是 memcached,
大家使用 ps aux | grep memcache 就会发现守护进程的名字是 memcached(我的环境是 ubuntu),其实后面的 d 可以理解为守护进程,因此网上有的人说 memcache 是客户端, memcached 是服务端就是这个意思,
同学们不要将客户端的 memcached 和服务端的 memcached 混淆了就好。 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值