当前位置: 首页 > 科技观察

说起PHPMemcache&Memcached这两个扩展的关系,大家有没有搞清楚?

时间:2023-03-21 18:33:09 科技观察

【.com原创稿件】Memcached是一个免费开源、高性能、分布式内存缓存系统。对于很多WEB程序员来说,应该是非常熟悉了。许多WEB程序员经常使用它。缓存数据是为了提供网站或应用程序的性能,而PHP作为网站开发的流行语言,肯定也支持Memcached,但是当我们翻开PHP官方手册时,我们发现一个有趣的情况,那就是PHP有提供相似功能的两个扩展,它们是Memcache和Memcached扩展,这两个扩展之间是什么关系?两个扩展是否相同?带着这些问题,我们来一一分析。一些基本概念Memcached其实是一个C/S应用,所以有两个基本概念:Memcachedserver。真正提供数据缓存的是应用端。这一端是一个独立的进程,并开放相应的端口供Memcached客户端进行数据的增删改查。内存缓存客户端。只要能与Memcached服务端通信,完成相应的数据操作功能,我们就可以称之为Memcached客户端。比如本文提到的PHP的两个扩展都可以叫做clients。两个扩展的相关知识和运行原理都在pecl官方扩展库中。我们可以看到Memcache扩展的生日是2004年2月26日,Memcached扩展的生日是2009年1月29日。哈哈,看到这两个生日,你有什么感想呢?从上面的birthday可以看出,Memcache先诞生,Memcached后诞生。我们先看一下两者的定义:Memcacheextension。此扩展是同时提供面向过程和面向对象方法的扩展。内存缓存。此扩展使用libmemcached库与Memcached服务器通信。看了两个扩展的定义,越来越有意思了。我们似乎离真相越来越近了,但我们还差一步,那就是libmemcached。这个问题我们思考一下,继续翻开Memcached的官方文档。不难发现,libmemcached其实就是Memcached官方提供的客户端。也就是说,php的Memcached扩展其实是一个二次封装扩展。这个扩展站在官方客户端扩展的肩膀上,所以提供的功能肯定更多,但是Memcache扩展只是PHP自己实现的一套Memcached扩展库。说到这里,我想很多PHP程序员应该明白为什么我们不再提倡使用Memcache扩展了。下图显示了两个扩展的工作原理。PHP中还有一个特殊的扩展。以上两个扩展进行了分析。其实这两个扩展的情况在PHP中并不是独一无二的。PHP中还有一个知识点和这种情况是一样的。就是我们接下来要说的Mysqlnd和libmysqlclient。通过前面的分析,不难想到libmysqlclient其实就是MySQL数据库提供的MySQL编程客户端,而Mysqlnd其实就是PHP自己实现的MySQL编程客户端。不是在libmysqlclient的肩上进行二次开发。它是用C语言编写的。其实Memcached不仅支持PHP语言,还支持C、C++、Java、MySQL、Python、Nodejs等,通过上面的Memcache扩展,我们知道只要提供协议,实现起来很简单Memcached在自己的领域编程语言Client中,说了这么多,不知道大家是否已经充分理解了两者的关系。如果还有不明白的可以评论交流。也可以加入群讨论(Q群号312724475)【原创稿件,合作网站转载请注明原作者和出处为.com】