Heim php教程 php手册 php上的memcache和memcached两个pecl库

php上的memcache和memcached两个pecl库

Jun 06, 2016 pm 08:33 PM
memcache php

一开始就在疑惑为什么会有两个库,且在php.net官方都有文档支持。

之前尝试用的是memcache,后来发现memcached支持setMulti方法,准备转向使用memcached库了。

(试了下,实际上,memcache从支持多值set,但文档上还没有,看changelog好像是3.0开始支持,稳定版可能不带此功能。)

至于效率,也不清楚会有多大差距。

这里有一篇文章也说到,memcached是基于libmemcached,可能要好一些。

终于,基于libmemached的php扩展在pecl发布了。

于是,现在pecl上有两个memcache客户端了。一个是完全在PHP框架内开发的,一个是使用libmemcached的。

功能嘛,我没看过libmemcached,但是理论上来说,在其他语言里已经很流行的libmemcached应该会有更完善的功能。而程序上性能(内存和CPU使用率),不好说,虽然pecl::memcache是原生实现的,但是使用libmemcached的pecl::memached只支持OO接口,而pecl::memcache则是OO和非OO两套接口并存,这点拖累了它。

其实这些都不是最重要的。使用libmemcached有个明显的优点,就是以后随着memcached服务器端的改进,这个lib也必定会马上跟进的。而pecl::memcache却不一定能做到按时跟进。

pecl::memcached,还有个非常称赞的地方,就是flag不是在操作的时候设置了。而是有一个统一的setOption()。冲着这个方法,就非常值得从pecl::memcache转到pecl::memcached了。具体的接口可以看这里:

我在pecl-dev@里提到是否可以做成driver-based的架构。跟现在的MySQL一样,可以选择使用mysqlnd或者libmysql作为底层的引擎。但是之后想想,其实我并不是很支持对memcached使用这样的架构,它和MySQL的情况不一样。

mysqlnd作为一个引擎而不是一个新的api来开发,可以使得大量的应用程序不需要对数据库操作做修改即可用上新的引擎。如果mysqlnd作为一个新的extension,那么如果它想兼容以前的程序,就面临一个很困难的选择。因为目前为止,存在3个官方的使用libmysql的,并具有不同对外接口的MySQL类集。mysqlnd能兼容mysql,就无法兼容mysqli或者pdo。当然对于使用自己的抽象数据库类的程序来说,这个可以通过改写类或者更换driver(php层面)来实现兼容。但是要想想,就算是使用抽象库,这个世界如此之多的数据库抽象库,如果要让所有人都用得起nd,那得改多少个库,加多少个driver阿。

memcached的情况就简单很多了,目前和官方关系比较密切的只有pecl::memcache,而且接口基本上都是根据memcached的协议来的,和libmemcache相差无几。它们其实都可以被看作是一个抽象类里的不同driver。所以虽然是两套不同的客户端,但是更换起来,几乎不需要做什么改动,只需要在类初始化的地方更改一下,set/get等等这些方法的flag去掉即可,除非你使用了非OO的接口。

另外mysql在通讯和数据获取上也比memcache复杂,nd可以做到一些libmysql无法做到的事情。例如buffer可以直接用php内部的HashTable和zval存储;再例如一些作为持久链接的结构可以更多地缓存起来。(这些例如只是我的猜测,我并没有去阅读过mysqlnd的代码)

Memcached manual:

Memcache manual:

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
2 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Repo: Wie man Teamkollegen wiederbelebt
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Abenteuer: Wie man riesige Samen bekommt
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

CakePHP-Projektkonfiguration CakePHP-Projektkonfiguration Sep 10, 2024 pm 05:25 PM

In diesem Kapitel werden wir die Umgebungsvariablen, die allgemeine Konfiguration, die Datenbankkonfiguration und die E-Mail-Konfiguration in CakePHP verstehen.

PHP 8.4 Installations- und Upgrade-Anleitung für Ubuntu und Debian PHP 8.4 Installations- und Upgrade-Anleitung für Ubuntu und Debian Dec 24, 2024 pm 04:42 PM

PHP 8.4 bringt mehrere neue Funktionen, Sicherheitsverbesserungen und Leistungsverbesserungen mit einer beträchtlichen Menge an veralteten und entfernten Funktionen. In dieser Anleitung wird erklärt, wie Sie PHP 8.4 installieren oder auf PHP 8.4 auf Ubuntu, Debian oder deren Derivaten aktualisieren. Obwohl es möglich ist, PHP aus dem Quellcode zu kompilieren, ist die Installation aus einem APT-Repository wie unten erläutert oft schneller und sicherer, da diese Repositorys in Zukunft die neuesten Fehlerbehebungen und Sicherheitsupdates bereitstellen.

CakePHP Datum und Uhrzeit CakePHP Datum und Uhrzeit Sep 10, 2024 pm 05:27 PM

Um in cakephp4 mit Datum und Uhrzeit zu arbeiten, verwenden wir die verfügbare FrozenTime-Klasse.

CakePHP-Datei hochladen CakePHP-Datei hochladen Sep 10, 2024 pm 05:27 PM

Um am Datei-Upload zu arbeiten, verwenden wir den Formular-Helfer. Hier ist ein Beispiel für den Datei-Upload.

CakePHP-Routing CakePHP-Routing Sep 10, 2024 pm 05:25 PM

In diesem Kapitel lernen wir die folgenden Themen im Zusammenhang mit dem Routing kennen.

Besprechen Sie CakePHP Besprechen Sie CakePHP Sep 10, 2024 pm 05:28 PM

CakePHP ist ein Open-Source-Framework für PHP. Es soll die Entwicklung, Bereitstellung und Wartung von Anwendungen erheblich vereinfachen. CakePHP basiert auf einer MVC-ähnlichen Architektur, die sowohl leistungsstark als auch leicht zu verstehen ist. Modelle, Ansichten und Controller gu

So richten Sie Visual Studio-Code (VS-Code) für die PHP-Entwicklung ein So richten Sie Visual Studio-Code (VS-Code) für die PHP-Entwicklung ein Dec 20, 2024 am 11:31 AM

Visual Studio Code, auch bekannt als VS Code, ist ein kostenloser Quellcode-Editor – oder eine integrierte Entwicklungsumgebung (IDE) –, die für alle gängigen Betriebssysteme verfügbar ist. Mit einer großen Sammlung von Erweiterungen für viele Programmiersprachen kann VS Code c

CakePHP erstellt Validatoren CakePHP erstellt Validatoren Sep 10, 2024 pm 05:26 PM

Der Validator kann durch Hinzufügen der folgenden zwei Zeilen im Controller erstellt werden.

See all articles