Red de conocimiento informático - Material del sitio web - ¿Cómo obtener claves con el mismo prefijo de Memcache en PHP?

¿Cómo obtener claves con el mismo prefijo de Memcache en PHP?

Entre los módulos de extensión proporcionados por PHP para interactuar con Memcached, se encuentran Memcached y Memcache. El primero proporciona el método getAllKeys para atravesar todas las claves en el servidor Memcached, pero no garantiza operaciones atómicas, mientras que el segundo no proporciona ningún método. Aunque en PHP oficial

* @Creado: 28-May-2010

\*/

función getMemcacheKeys() {

$ memcache = new Memcache;

$memcache->connect('127.0 .0.1', 11211) or die ("No se pudo conectar al servidor de Memcache");

$list = array ( );

$allSlabs = $memcache->getExtendedStats('losas');

$items = $memcache->getExtendedStats('items');

foreach($allSlabs as $server =>$slabs) {

foreach($slabs AS $ slabId => $slabMeta) {

$cdump = $memcache-> getExtendedStats ('cachedump',(int)$slabId);

foreach($cdump AS $keys => $ arrVal) {

foreach($arrVal AS $k => $ v ){

eco $k .""

}

}

}

}<; / p>

}/EO getMemcacheKeys() ?>

En el código anterior, si se usa para obtener las claves en un único servidor Memcached, no habrá ningún problema, pero si se usa para obtener el grupo de conexiones Todas las claves en múltiples memcached, habrá un problema, encontrará que las claves impresas están duplicadas y el problema es cuando se usa getExtendedStats para obtener la clave de un $$ slabID específico

} }

}

}

}/EO getMemcacheKeys() ?slabID

Utilice getExtendedStats para obtener un $slabID específico

, la información devuelta es la clave almacenada en todos los servidores en el grupo de conexiones para un $slabId específico.

Cuando $server es "127.0.0.1:11214 " y $slabId es 0, la información en la variable $cdump se imprimirá de la siguiente manera:

array(2) {

[ "127.0 .0.1:11214"]=>

array(1) {

["curso_escuelas__? ¨é?¨"]=>

array( 2) {

[0]=>

cadena(1) "0" [1]=>

cadena(10) "12" }

}

["127.0.0.1:11216"]=>

matriz(1) {

["monitorMemcache"]= >

matriz(2) {

[0]=>

cadena(2) "10" [1]=>

string (10) "12" }

}

}

Cuando $server es "127.0.0.0.1:11216" y $slabId es 0 , Imprima la información de la variable $cdump de la siguiente manera:

array(2) {

["127.0.0.1:11214"]=>

array (1) {

["curso_escuelas__? ¨é?¨"]=>

matriz(2) {

[0]=>

string(1) "0" [1]=>

string(10) "12" }

}

["127.0. 0.1:11216 "]=>

matriz(1) {

["monitorMemcache"]=>

matriz(2) {

[ 0]=>

cadena(2) "10" [1]=>

cadena(10) "12" }

}

}