¿Cómo obtener claves con el mismo prefijo de Memcache en PHP?
* @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" }
}
}