关键词搜索

全站搜索
×
密码登录在这里
×
注册会员
×

已有账号? 请点击

忘记密码

已有账号? 请点击

使用其他方式登录

PHP扩展memcache和memcached区别

发布2022-07-09 浏览661次

详情内容

在PHP安装时,扩展中有Memcache 和 Memcached 看起来只是相差一个字母,平时老是搞混,今天整理下两者之间的区别。

Memcached,简单来说就是一个免费开源并且高性能的分布式内存对象缓存系统,主要用于加速动态 Web 程序,减轻数据库负载。

image.png

再说下他们的历史:

1、memcache最早是在2004年2月开发的,最后更新是在2013年4月,而 memcached 最早是在2009年1月开发的,最后更新是在2014年1月更新的。因此 memcache的历史 比 memcached 早。

2、 memcache 是一个原生版本,完全是在 PHP 框架内开发的,支持 OO(面向对象) 和非 OO 两套接口并存,而 memcached 是建立在 libmemcached 的基础上的,只支持 OO 接口。这就意味着在安装 memcache 扩展的时候不要求安装其他的东西,但是在安装 memcached 的时候会要求你安装 libmemcached。别嫌麻烦!因为 libmemcached 是 memcache 的 C 客户端,它具有低内存,线程安全等优点。

3、memcached 比 memcache 支持更多的 memcache 协议,大概也就是说 memcached 有更多的方法,比如 getMulti() 和 setMulti() 函数非常有用,但是 memcache 并不支持。

4、差别比较大的一点是,memcached 支持 Binary Protocol,而 memcache 不支持,这意味着 memcached 会有更高的性能。

5、比较尴尬的一点是 memcached 和 memcache 对应的服务端名字都是 memcached,大家使用 ps aux | grep memcache 就会发现守护进程的名字是 memcached(我的环境是 ubuntu)

下面是一个支持功能对照列表:

对比项 Memcache Memcached
发布日期 2004-06-08 2009-01-29 (beta)
仍在维护? Yes Yes
第三方依赖 None libmemcached
Key自动修复 Yes No
Append/Prepend No Yes
自动序列化 Yes Yes
二进制协议 No Optional
CAS No Yes
压缩 Yes Yes
超时设置 Connect Only Various Options
一致性哈希 Yes Yes
延迟Get No Yes
Multi-Get Yes Yes
Session支持 Yes Yes
指定Server get/set No Yes
数字存储 Converted to Strings Yes
支持长连接? Yes Yes

首先 Memcached 是有服务端和客户端的,对于 PHP 来说,客户端就是 PHP 扩展。

Memcached 服务端

启动 Memcached 服务端是通过启动一个 memcached 的程序来实现的,这里的 d 的英文是 daemon,意思就是常驻进程的意思。

所以 Memcache 是对这个内存缓存的一个常用称呼,而 Memcached 是这个缓存数据库的实际运行程序。

image.png


PHP 的 Memcached 客户端

PHP 有两个 Memcached 客户端:“PHP Memcache 扩展” 和 “PHP Memcached 扩展”,这就是是我们搞混的地方。

PHP Memcache 扩展用 PHP 实现的,支持面向对象和面向过程两种接口,2004年就实现了,是老客户端,而且功能少,属性也可设置的少。
函数列表:http://php.net/manual/zh/book.memcache.php


PHP Memcached 扩展基于 libmemcached 开发的,使用 libmemcached 库提供的 API 与 Memcached 服务进行交互,只支持面向对象的接口,2009年才实现,Memcached 扩展功能更加完善,支持的函数更多,比如支持批量操作,现在一般建议使用 Memcached 扩展。
函数列表:http://php.net/manual/zh/book.memcached.php


必须同时安装服务端和客户端

如果安装了 Memcached 服务端不安装扩展,那么 PHP 无法操控 Memcached。

同样如果安装了 PHP Memcached 扩展(PHP Memcache 和 PHP memcached 两者选择一个),但是没有安装 Memcached 服务端,那么这个就无法使用。

只有同时安装了 Memcached 服务端和 PHP 客户端扩展才可以提高动态网站性能。


总结
从上面的分析也可以得出一个结论:memcached 比 memcache 好。
其实很简单,memcache是php的一个扩展,用于php管理memcached(服务端),php-memcache.dll。

如果安装了memcached(服务端)不安装扩展,那么php无法操控memcached,但是命令行使用起来没有问题

如果安装了PHP memcache客户端(php memcache和php memcached)。但是没有安装memcached(服务端)服务,那么这个就无法使用

只有同时安装了memcached(服务端)和PHP memcache客户端扩展才可以提高动态网站性能


点击QQ咨询
开通会员
返回顶部
×
  • 微信支付
微信扫码支付
微信扫码支付
请使用微信描二维码支付
×

提示信息

×

选择支付方式

  • 微信支付
确定支付下载