Maison php教程 php手册 PHP模块 Memcached功能多于Memcache

PHP模块 Memcached功能多于Memcache

Jun 21, 2016 am 08:53 AM
counter memcache memcached token

比如说PECL里有两个Memcached的模块,Memcache和Memcached,目前大部分PHP环境里使用的是名字里不带d的Memcache版本,这个版本释出的比较早,是一个原生版本,与之对应的带d的Memcached版本则是建立在libmemcached的基础上,所以说Memcached版本的功能更全一些。

安装Memcached版本的PHP模块

wget http://download.tangent.org/libmemcached-0.35.tar.gz
tar zxf libmemcached-0.35.tar.gz
cd libmemcached-0.35
./configure
make
make install

wget http://pecl.php.net/get/memcached-1.0.0.tgz
tar zxf memcached-1.0.0.tgz
cd memcached-1.0.0
phpize
./configure
make
make install

打开php.ini加上:

extension = "memcached.so"

这样安装就结束了,你可以通过下列命令来确认:

php -m grep mem

演示Memcached版本的新功能

先虚构一个问题,假设counter初始值是一个整数,不使用increment方法,通过get/set完成每次加一。

在Memcache版本里,我们只能按照大致如下的方式来进行:

$m = new Memcache();
$m->addServer('localhost', 11211);
$v = $m->get('counter');
$m->set('counter', $v + 1);

由于get/set这两个动作无法作为一个原子来操作,所以当多个进程同时处理时,会出现丢失的可能,更让人恼火的是,你根本就不知道什么时候出现丢失。

再看看Memcached版本里,我们是如何做的:

$md = new Memcached();
$md->addServer('localhost', 11211);
$v = $md->get('counter', null, $token)
$md->cas($token, 'counter', $v + 1);

cas是Memcached版本里提供的功能,说白了就是一个乐观锁的功能,如果你把$token的值var_dump出来,就会发现$token其实就是一个版本号,如果通过get得到的$token版本号在cas的时候不对应,就说明已经有别的操作更新了,此时cas操作会失败,至于如何继续操作,就看你自己了。

注:如果你想手动重现一下冲突的情况,可在get和cas之间sleep若干秒,并拷贝两份脚本,先后执行。

顺便说一句,推荐的Memcached版本模块的哈希设置如下:

$md->setOption(Memcached::OPT_DISTRIBUTION, Memcached::DISTRIBUTION_CONSISTENT);
$md->setOption(Memcached::OPT_HASH, Memcached::HASH_CRC);

总结

Memcached版本还有很多Memcache没有的功能,比如通过getByKey, setByKey等自动支持多个服务器,就不赘述了,该用哪个扩展已经不言自明了。

补充:http://code.google.com/p/memcached/wiki/PHPClientComparison



Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌
Will R.E.P.O. Vous avez un jeu croisé?
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Que faire si le jeton de connexion n'est pas valide Que faire si le jeton de connexion n'est pas valide Sep 14, 2023 am 11:33 AM

Les solutions au jeton de connexion invalide incluent la vérification si le jeton a expiré, la vérification si le jeton est correct, la vérification si le jeton a été falsifié, la vérification si le jeton correspond à l'utilisateur, la suppression du cache ou des cookies, la vérification de la connexion réseau et l'état du serveur. , vous reconnecter ou demander un nouveau jeton. Contacter le support technique ou les développeurs, etc. Introduction détaillée : 1. Vérifiez si le jeton a expiré. Le jeton de connexion a généralement une période de validité définie. Une fois la période de validité dépassée, il sera considéré comme invalide, etc.

Comment résoudre le problème du jeton de connexion invalide Comment résoudre le problème du jeton de connexion invalide Sep 14, 2023 am 10:57 AM

Le problème du jeton de connexion invalide peut être résolu en vérifiant la connexion réseau, en vérifiant la période de validité du jeton, en effaçant le cache et les cookies, en vérifiant l'état de connexion, en contactant le développeur de l'application et en renforçant la sécurité du compte. Introduction détaillée : 1. Vérifiez la connexion réseau, reconnectez-vous au réseau ou modifiez l'environnement réseau ; 2. Vérifiez la période de validité du jeton, obtenez un nouveau jeton ou contactez le développeur de l'application 3. Effacez le cache et les cookies, effacez le navigateur ; cache et Cookie, puis reconnectez-vous à l'application; 4. Vérifiez l'état de connexion.

Comment utiliser Memcache dans le développement PHP ? Comment utiliser Memcache dans le développement PHP ? Nov 07, 2023 pm 12:49 PM

Dans le développement Web, nous devons souvent utiliser une technologie de mise en cache pour améliorer les performances du site Web et la vitesse de réponse. Memcache est une technologie de mise en cache populaire qui peut mettre en cache n'importe quel type de données et prend en charge une simultanéité élevée et une haute disponibilité. Cet article explique comment utiliser Memcache dans le développement PHP et fournit des exemples de code spécifiques. 1. Installer Memcache Pour utiliser Memcache, nous devons d'abord installer l'extension Memcache sur le serveur. Dans le système d'exploitation CentOS, vous pouvez utiliser la commande suivante

Comment résoudre l'erreur de syntaxe C++ : « expression primaire attendue avant le jeton « : » » ? Comment résoudre l'erreur de syntaxe C++ : « expression primaire attendue avant le jeton « : » » ? Aug 26, 2023 pm 04:06 PM

Comment résoudre l'erreur de syntaxe C++ : « expectedprimary-expressionbefore » : « jeton » ? Les erreurs de syntaxe sont un problème courant dans la programmation C++. L'une des erreurs courantes est le message d'erreur "expectedprimary-expressionbefore':'token". Cette erreur se produit généralement lors de l'utilisation d'expressions conditionnelles et de l'opérateur ternaire. Cet article présentera la cause de cette erreur

Que signifie le jeton ? Que signifie le jeton ? Feb 29, 2024 am 10:19 AM

Le jeton est une sorte de monnaie virtuelle. C'est une monnaie numérique utilisée pour représenter les autorisations des utilisateurs, enregistrer les informations de transaction et payer en monnaie virtuelle. Le jeton peut être utilisé pour effectuer des transactions sur un réseau spécifique, il peut être utilisé pour acheter ou vendre des monnaies virtuelles spécifiques, et il peut également être utilisé pour payer des services spécifiques.

Comment optimiser l'utilisation du processeur des applications PHP à l'aide de la technologie de mise en cache Memcached ? Comment optimiser l'utilisation du processeur des applications PHP à l'aide de la technologie de mise en cache Memcached ? Jun 21, 2023 pm 05:07 PM

Avec le développement d'Internet, les applications PHP sont devenues de plus en plus courantes dans le domaine des applications Internet. Cependant, un accès simultané élevé par les applications PHP peut entraîner une utilisation élevée du processeur sur le serveur, affectant ainsi les performances de l'application. Afin d'optimiser les performances des applications PHP, la technologie de mise en cache Memcached est devenue un bon choix. Cet article explique comment utiliser la technologie de mise en cache Memcached pour optimiser l'utilisation du processeur des applications PHP. Introduction à la technologie de mise en cache Memcached Memcached est un

Comment utiliser Memcache pour des opérations efficaces de lecture et d'écriture de données dans le développement PHP ? Comment utiliser Memcache pour des opérations efficaces de lecture et d'écriture de données dans le développement PHP ? Nov 07, 2023 pm 03:48 PM

Dans le développement PHP, l'utilisation du système de mise en cache Memcache peut considérablement améliorer l'efficacité de la lecture et de l'écriture des données. Memcache est un système de mise en cache basé sur la mémoire qui peut mettre en cache les données en mémoire pour éviter les lectures et écritures fréquentes de la base de données. Cet article expliquera comment utiliser Memcache en PHP pour des opérations efficaces de lecture et d'écriture de données, et fournira des exemples de code spécifiques. 1. Installer et configurer Memcache Vous devez d'abord installer l'extension Memcache sur le serveur. peut passer

Comment utiliser Memcache pour une écriture et des requêtes de données efficaces dans le développement PHP ? Comment utiliser Memcache pour une écriture et des requêtes de données efficaces dans le développement PHP ? Nov 07, 2023 pm 01:36 PM

Comment utiliser Memcache pour une écriture et des requêtes de données efficaces dans le développement PHP ? Avec le développement continu des applications Internet, les exigences en matière de performances du système sont de plus en plus élevées. Dans le développement PHP, afin d'améliorer les performances du système et la vitesse de réponse, nous utilisons souvent diverses technologies de mise en cache. L'une des technologies de mise en cache couramment utilisées est Memcache. Memcache est un système de mise en cache d'objets à mémoire distribuée hautes performances qui peut être utilisé pour mettre en cache les résultats des requêtes de base de données, les fragments de page, les données de session, etc. En stockant les données en mémoire

See all articles