Necesito replicar memcached en otro sistema de valores clave (couchbase). ¿Cómo puedo consultar el contenido de un servidor memcached para obtener una lista de lo que hay allí para poder copiarlo?¿Cómo puedo consultar memcached con php para obtener una lista de todas sus claves en el almacenamiento?
Respuesta
memcache> = 2.0.0
function getMemcacheKeys() {
$memcache = new Memcache;
$memcache->connect('127.0.0.1', 11211)
or die ("Could not connect to memcache server");
$list = array();
$allSlabs = $memcache->getExtendedStats('slabs');
$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) {
if (!is_array($arrVal)) continue;
foreach($arrVal AS $k => $v) {
echo $k .'<br>';
}
}
}
}
}
Gracias por el código de ejemplo
Aquí es cómo quitar una tecla específica o varias claves
estoy usando una clase de ayuda para eliminar el caché por lo que debe asignarle a la función una referencia a la conexión de Memcache
public static function removePriceCache(&$memcache, &$cacheAvailable) {
if ($cacheAvailable == true) {
$list = array();
$allSlabs = $memcache->getExtendedStats('slabs');
$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) {
if (!is_array($arrVal))
continue;
foreach ($arrVal as $k => $v) {
//echo $k . '<br>';
if (stripos($k, "Price") !== false) {
$memcache->delete($k);
}
}
}
}
}
}
}
Esto eliminará todas las teclas que tienen la palabra 'precio' en ella ..
Todas estas soluciones para Memcache así que aquí está para Memcached
function getMemcachedKeys($host = '127.0.0.1', $port = 11211)
{
$mem = @fsockopen($host, $port);
if ($mem === FALSE) return -1;
// retrieve distinct slab
$r = @fwrite($mem, 'stats items' . chr(10));
if ($r === FALSE) return -2;
$slab = array();
while (($l = @fgets($mem, 1024)) !== FALSE) {
// sortie ?
$l = trim($l);
if ($l == 'END') break;
$m = array();
// <STAT items:22:evicted_nonzero 0>
$r = preg_match('/^STAT\sitems\:(\d+)\:/', $l, $m);
if ($r != 1) return -3;
$a_slab = $m[1];
if (!array_key_exists($a_slab, $slab)) $slab[$a_slab] = array();
}
// recuperer les items
reset($slab);
foreach ($slab AS $a_slab_key => &$a_slab) {
$r = @fwrite($mem, 'stats cachedump ' . $a_slab_key . ' 100' . chr(10));
if ($r === FALSE) return -4;
while (($l = @fgets($mem, 1024)) !== FALSE) {
// sortie ?
$l = trim($l);
if ($l == 'END') break;
$m = array();
// ITEM 42 [118 b; 1354717302 s]
$r = preg_match('/^ITEM\s([^\s]+)\s/', $l, $m);
if ($r != 1) return -5;
$a_key = $m[1];
$a_slab[] = $a_key;
}
}
// close
@fclose($mem);
unset($mem);
// transform it;
$keys = array();
reset($slab);
foreach ($slab AS &$a_slab) {
reset($a_slab);
foreach ($a_slab AS &$a_key) $keys[] = $a_key;
}
unset($slab);
return $keys;
}
Esta es la mejor respuesta actualmente aunque las personas aún no la hayan votado; la pregunta que asker estaba haciendo sobre Memcached con una 'd'. No sé por qué la respuesta de Mark Baker recibió tantos votos a favor. – Ryan
Esta es la respuesta correcta. – Apollo
De acuerdo, la mejor respuesta. – HakRo
- 1. Memcached o MySQL para el almacenamiento de sesiones - PHP
- 2. ¿Es posible obtener/buscar claves Memcached con un prefijo?
- 3. Estrategias de almacenamiento en caché con Memcached?
- 4. SQL, ¿Cómo consultar con múltiples claves foráneas en una tabla?
- 5. ¿Puedo consultar una lista? Java
- 6. Obtener la lista de claves de caché en Django
- 7. Extraer todas las claves de una lista de diccionarios
- 8. rendimiento de django al consultar modelos con muchas claves externas?
- 9. PHP Obtenga todas las claves numéricas/anónimas en una matriz
- 10. ¿Cómo exportar todas las claves y valores de memcached con python-memcache?
- 11. Consultar una lista para solo duplicados
- 12. Obtener una lista de todas las claves primarias en una base de datos
- 13. ¿Cómo puedo obtener una lista de todas las propiedades de un ABRecordRef?
- 14. Common Lisp: obtener todas las claves de una tabla hash dada como una lista
- 15. Almacenamiento en caché de imágenes en Memcached
- 16. ¿Cómo puedo obtener una lista de todas las canalizaciones con nombre abierto en Windows?
- 17. ¿Cómo puedo obtener el tiempo de caducidad para el elemento en particular en memcached
- 18. Almacenamiento de claves en KeyChain con KeyChainItemWrapper
- 19. Almacenamiento de claves secretas importantes en archivos php
- 20. ¿Cómo puedo obtener todas las letras alpabéticas en PHP?
- 21. ¿Cómo puedo console.log funciones junto con todas sus propiedades?
- 22. ¿Cómo puedo obtener una lista de todas las implementaciones de una interfaz mediante programación en Java?
- 23. PHP códigos de resultado de extensión Memcached
- 24. ¿Puedo instalar la extensión de memcached PHP con PECL?
- 25. ¿Cómo puedo obtener todas las permutaciones posibles de una lista con Common Lisp?
- 26. Tinte una UIView con todas sus subvistas
- 27. En Django, ¿cómo borrar todas las claves y valores almacenados en memcached?
- 28. Cómo consultar mongo en php?
- 29. ¿Cómo puedo consultar tablas cruzadas con el patrón de repositorio?
- 30. ¿Cómo puedo obtener una lista de todas las variables definidas en Matlab u Octave?
sólo quiero señalar aquí que, si bien esto funciona cachedump es realmente está destinado a fines de depuración de memcached y no está destinado a ser utilizado de esta manera. Las versiones futuras de memcached también podrían no ser compatibles con cachedump. (Vea el comentario 8 aquí de uno de los principales contribuidores memcached http://code.google.com/p/memcached/issues/detail?id=187) – mikewied
Cachedump no parece obtener todas las claves (he estado tratando de hacer esto, y luego encontré este enlace): http://code.google.com/p/memcached/wiki/NewProgrammingFAQ – jonderry
una pequeña pero gran diferencia que funcionó para mí fue el parámetro ** limit ** en ' Función getExtendedStats', el valor predeterminado es _just_100. update: '$ cdump = $ memcache-> getExtendedStats ('cachedump', (int) $ slabId, 100000000);' – matija