自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

話說PHP的Memcache & Memcached這兩個擴展之間的關系,你都摸清楚了嗎?

原創(chuàng)
移動開發(fā) 開發(fā) 后端
Memcached是程序員常用的緩存系統,但是在PHP里面,我們發(fā)現有兩個擴展能夠完成這個功能,即Memcache和Memcached擴展,那么這兩個擴展的關系是什么呢?它們會不會是同一個擴展呢?我們在本文將一一揭曉。

【51CTO.com原創(chuàng)稿件】Memcached是一個免費開源的、高性能的、分布式內存緩存系統,對于很多WEB程序員來說,對它應該非常熟悉,很多WEB程序員經常用它將數據庫里面的數據緩存起來從而提供網站或者應用的性能,而PHP作為網站開發(fā)的熱門語言,肯定也是支持Memcached的,但是當我們打開PHP的官方手冊,發(fā)現一個有趣的情況,就是PHP有兩個擴展提供了類似的功能,它們就是Memcache和Memcached擴展,這兩個擴展的關系是什么?以及兩個擴展是不是相同的?帶著這些問題,下面我們就來一一進行分析。

一些基本的概念

其實,Memcached就是一個C/S應用,所以有下面兩個基本概念:

  • Memcached服務端。就是真正提供數據緩存的應用端,這個端是一個獨立的進程,并且開放相應端口供Memcached客戶端對數據進行增刪改查等等操作。
  • Memcached客戶端。只要是能夠與Memcached服務端進行通訊、并且完成相應的數據操作功能,我們都可以稱之為Memcached客戶端,比如本文說的PHP兩個擴展,都可以稱之為客戶端。

兩個擴展的相關知識和運行原理

在pecl官方擴展庫,我們能夠看到,Memcache擴展的生日是2004年2月26日,而Memcached擴展的生日是2009年1月29日,哈哈,看著這兩個生日,大家是不是想到了什么呢?

從上面的生日,我們能夠看到,Memcache是先出生的,而Memcached是后出生的,下面我們再來看看二者的定義:

  • Memcache擴展。該擴展是一個提供了面向過程和面向對象兩種方式的擴展。
  • Memcached。這個擴展使用libmemcached庫與Memcached服務程序進行通信。

看了兩個擴展的定義,越來越有意思了,我們似乎離真相越來越近了,只不過還差一步,就是這個libmemcached到底是什么,我們接著思考這個問題,繼續(xù)打開Memcached的官方文檔,我們不難發(fā)現,其實這個libmemcached就是Memcached提供的官方客戶端,換句話說,php的Memcached擴展其實就是一個二次封裝擴展,該擴展站在官方提供的客戶端擴展的肩上,所以提供的功能肯定就多,而反觀Memcache擴展僅僅是PHP自己實現的一套Memcached擴展庫而已,說到這里,想必很多PHP程序員應該明白了,為什么我們不再提倡使用Memcache擴展的原因,下圖是兩個擴展的工作原理。

memcached

 

在PHP里面還有一個特殊的擴展

上面分析了兩個擴展,其實這兩個擴展的情況在PHP里面并不是***的,在PHP里面還有一個知識點和這個情況是一樣的,它就是我們接下來要說的Mysqlnd和libmysqlclient。

 

通過前面的分析,我們不難想到,libmysqlclient其實就是MySQL數據庫官方提供的MySQL編程客戶端,而Mysqlnd其實就是PHP自己實現的MySQL編程客戶端,它不是站在libmysqlclient的肩上進行二次開發(fā)的,它是用C語言編寫的。

msyql

其實,Memcached不僅僅支持PHP語言,還支持C、C++、Java、MySQL、Python、Nodejs等等,通過上面的Memcache擴展,我們知道,只要按照它提供的協議,很容易實現自己領域編程語言的Memcached客戶端,說了這么多,不知道你是否已經徹底明白了二者的關系,如果還有不明白的,可以在評論里面進行互動。也可以加群討論(Q群號312724475

【51CTO原創(chuàng)稿件,合作站點轉載請注明原文作者和出處為51CTO.com】

責任編輯:何星 來源: 51CTO
相關推薦

2020-02-27 14:05:26

SQLServer數據庫

2021-05-11 16:44:42

Windows工具軟件

2020-08-18 08:22:46

歸并排序

2018-05-08 06:34:31

2020-08-25 20:42:48

Windows 10Windows藍屏

2025-03-12 00:22:00

2020-12-10 10:32:33

區(qū)塊鏈比特幣數字貨幣

2020-08-14 08:13:49

列表差異編程

2021-12-16 16:20:57

GoWebSocketLinux

2022-09-16 07:24:12

Python 的四舍

2023-09-12 08:19:48

接口Controller線程

2021-09-13 13:05:05

Redis數據庫內存

2021-12-02 07:50:30

字節(jié)緩沖流使用

2022-02-21 23:08:50

Kubernetes集群容器

2017-11-09 13:56:46

數據庫MongoDB水平擴展

2018-06-21 11:03:54

shelllinux命令

2021-12-02 05:56:58

SpringMVC核心組件

2021-03-15 09:44:39

Broker源碼RocketMQ

2018-03-21 12:13:47

工具數據開發(fā)

2023-01-13 16:57:50

SpringBoot配置核心
點贊
收藏

51CTO技術棧公眾號