Conocimientos básicos de Memcache

1. ¿Qué es Memcache?

  Memcache es un sistema de base de datos de caché distribuido de alta velocidad. Al mantener una enorme tabla hash unificada en la memoria, se puede usar para almacenar datos en varios formatos, incluidas imágenes, videos, archivos y resultados de recuperación de bases de datos. En pocas palabras, los datos se transfieren a la memoria y luego se leen de la memoria, lo que mejora enormemente la velocidad de lectura.Actualmente, muchos sitios web lo utilizan para mejorar la velocidad de acceso al sitio web. Sitio web oficial de Memcache: http://memcached.org

  Escenarios de uso de Memcache:
   1. Almacenamiento no persistente: requisitos bajos para el almacenamiento de datos
   2. Almacenamiento distribuido: no apto para uso independiente
   3. Almacenamiento de clave / depósito: formato simple, no
Conocimientos básicos de Memcache

  Características y limitaciones del formato de datos de lista y matriz admitidos :
   1. No hay límite para la cantidad de datos de elementos que se pueden mantener en Memcached, siempre que la memoria sea suficiente.
   2. El proceso único de Memcached puede usar hasta 2G de memoria en un sistema de 32 bits. Si está en un sistema de 64 bits, no hay límite. Esto se debe a la limitación del sistema de 32 bits, pero el proceso puede usar hasta 2G Si desea utilizar más memoria, puede dividirla en varios El puerto habilita varios procesos Memcached.
   3. El tiempo máximo de caducidad de los datos de 30 días, establecido en permanente, también caducará en este momento, control REALTIME_MAXDELTA constante 60 60 24 * 30
   4. La longitud máxima de la clave es 250 bytes, más que esta longitud no se puede almacenar, constante KEY_MAX_LENGTH control
   5. Los datos máximos de un solo elemento son 1 MB, y los datos que superen 1 MB no se almacenarán. La constante POWER_BLOCK 1048576 se utiliza para el control, que es el tamaño de losa predeterminado
   6. El número máximo de conexiones simultáneas es 200, que está controlado por freetotal en conn_init (), y el número máximo de conexiones suaves es 1024, que está controlado por settings.maxconns = 1024.
   7. Parámetros relacionados con la ocupación del espacio: configuraciones .factor = 1.25, configuración .chunk_size = 48, que afecta la ocupación de datos de la losa y el método de paso a paso

   memcached es un servicio de comunicación de socket sin bloqueo, basado en la biblioteca libevent, debido a que no bloquea, la velocidad de lectura y escritura de la memoria es muy rápida .

   Memcached se divide en lado del servidor y lado del cliente, se pueden configurar múltiples del lado del servidor y del lado del cliente, y se usa ampliamente en servicios distribuidos.

   Memcached es muy eficaz como plataforma distribuida de datos a pequeña escala.

   Memcached tiene una correspondencia uno a uno entre la clave y el valor. El tamaño máximo predeterminado de la clave no puede exceder los 128 bytes, y el tamaño predeterminado del valor es 1M, que es una losa. Si desea almacenar un valor de 2M (continuo) , no puede usar dos losas, porque dos losas No es continuo y no se puede almacenar en la memoria, por lo que el tamaño de las losas debe modificarse. Cuando se almacenan múltiples claves y valores, incluso si las losas no se agotan, no se almacenarán otros datos.

En segundo lugar, la diferencia entre Mecached y Memcache y Memcached

先来解释下标题中三种写法:首字母大写的Mecached,指的是Memcached服务器,就是独立运行Memcached的后台服务器,用作存储缓存数据的“容器”。Memcached是可以独立在web服务器之外任何服务器,甚至可以是集群。memcached和memcache是Memcached的客户端,通过二者访问Memcached服务器,向容器存取数据。二者用途一致,但在用法上稍有差异。如下:

  1. Memcache se desarrolló por primera vez en febrero de 2004 y la última actualización fue en abril de 2013, mientras que Memcached se desarrolló por primera vez en enero de 2009 y finalmente se actualizó en enero de 2014. Por lo tanto, el historial de Memcache es anterior a Memcached. Para obtener más información, consulte:
  memcache: http://pecl.php.net/package/memcache
  memcached: http://pecl.php.net/package/memcached
  2. Memcache es una versión nativa, completamente en PHP framework Desarrollado para admitir la coexistencia de interfaces OO (orientadas a objetos) y no OO, memcahed se basa en libmemcached y solo admite interfaces OO. Esto significa que no es necesario que instale otras cosas cuando se extiende Memcache, pero se le pedirá que instale libmemcached cuando instale Memcache. Debido a que libmemcached es un cliente C de Memcache, tiene las ventajas de poca memoria y seguridad de subprocesos. Se dice que Sina Weibo ha reemplazado completamente memcache de PHP con memcached de PHP antes. Con alta concurrencia, la estabilidad se ha mejorado de manera decisiva.
  3. Memcached tiene un lugar agradable, es decir, la bandera no se establece durante la operación, pero tiene una función setOption () unificada para configurar, tome la adición de datos en caché como ejemplo:

#memcache:
bool   Memcache::add   (string  $key,mixed  $var  [, int  $flag  [,int  $expire]])

#memcached:
public  bool  Memcached::add(string   $key ,mixed  $value  [, int    $expiration])

Como se puede ver en los respectivos métodos de adición anteriores, el tercer parámetro en el método de adición de memcache representa si comprimir los datos, por lo que si mi caché necesita establecer un tiempo de vencimiento, pero el parámetro de la bandera está al frente, tengo que hacerlo todo el tiempo ¡Pon la bandera! En memcached, setOption () se usa para configuraciones unificadas (la compresión está activada de manera predeterminada).
  4. Memcached admite más protocolos de Memcache que Memcache, lo que probablemente significa que Memcached tiene más métodos, como las funciones getMulti () y setMulti () son muy útiles, pero Memcache no las admite. Se pueden encontrar más métodos en el manual oficial de PHP: memcache: http://php.net/manual/zh/book.memcache.php
memcached: http://php.net/manual/zh/book.memcached.php
  5 La gran diferencia es que Memcached es compatible con el protocolo binario, pero Memcache no, lo que significa que Memcached tendrá un mayor rendimiento. Pero mucha gente dice que Memcached no admite enlaces largos. Este no es el caso. Consulte el manual oficial: http://php.net/manual/zh/memcached.construct.php
  Conocimientos básicos de Memcache
  Se indica claramente arriba cuando se usa long Enlaces. . . . . Por lo tanto, Memcached puede lograr conexiones largas.
  6. También hay una diferencia en los algoritmos utilizados por los dos para implementar algunas de las mismas funciones. Por ejemplo, todo el mundo sabe que el "algoritmo hash consistente" es que cuando se agregan o eliminan nodos de almacenamiento, tiene menos impacto en el datos almacenados en memcached Un algoritmo, que se puede utilizar en las dos bibliotecas de extensión de PHP, pero el método de configuración es diferente.

    memcache
    修改php.ini添加:
    [Memcache]
    Memcache.allow_failover = 1
    ......
    ......
    Memcache.hash_strategy = consistent
    Memcache.hash_function = crc32
    ......
    ......
    或在PHP中使用 ini_set 方法
    Ini_set('memcache.hash_strteagy ','standrad');
    Ini_set('memcache.hash_function','crc32');

    memcached
    $mem = new memcached();
    $men->setOption(Memcached::OPT_DISTRIBUTION,Memcached::DISTRIBUTION_CONSISTENT);
    $mem->setOption(Memcached::OPT_LIBKETAMA_COMPATIBLE,true);

Resuma la descripción de las tres relaciones: Memcahed es, por ejemplo, un depósito (contenedor), Memcache es un tubo de plástico y Memcached es un tubo de PVC. Podemos utilizar tubos de plástico o tubos de PVC para llenar o sacar agua del depósito. El método utilizado varía de persona a persona. Los tubos de PVC son obviamente más rápidos que los tubos de plástico para transportar agua, y pueden equiparse con válvulas, aberturas y ramificaciones. etc. Hay más patrones que tubos de plástico. También se puede sacar una conclusión del análisis anterior: memcached es mejor que memcache, por lo que en el proceso de desarrollo futuro, intente utilizar memcached.

3. Instale el servidor y el cliente Memcache en Linux

Conocimientos básicos de Memcache
Conocimientos básicos de Memcache
Conocimientos básicos de Memcache
Conocimientos básicos de Memcache
Conocimientos básicos de Memcache
Conocimientos básicos de Memcache

Cuatro, use Memcache en PHP

  Clase de sistema: addServer, addServers, getStats, getVersion
  Clase de datos: agregar, establecer, eliminar, vaciar, reemplazar, incrementar, obtener
  Clase avanzada: setMulti, deleteMulti, getMulti, getResultCode, getResultMessage

<?php
$m = new  Memcache();
$array  =  array(
                            array('127.0.0.1',11211),
                            array('127.0.0.2',11211),
                );
$m->addServers($array);        //连接服务端
print_r($m->getStats());           //查看状态
print_r($m->getVersion());       //查看版本号
//两个add,后面一个不会覆盖掉前面一个
$m->add('mkey','mvalue',600);
$m->add('mkey','mvalue2',600);
echo $m->get('mkey');
//replace覆盖前面相同的key
$m->replace('mkey','mvalue2',600);
//set方法既可以直接覆盖也会替换覆盖
$m->set('mkey','mvalue',600);
//删除
$m->delete('mkey');
//清空全部缓存
$m->flush();
//每次加5和减5操作
$m->increment('num',5);
echo  $m->get('num');
$m->decrement('num',5);
//setMulti第一个参数是存储的数据,第二个是过期时间
$data1 = array(
                'key'      =>       'value',
                'key2'    =>       'value2',
);
$m->setMulti($data,0);
$result = $m->getMulti(array('key','key2'));
print_r($result);
//一次性删除多条数据
$m->deleteMulti(array('key','key2'));
print_r($result);
//错误编码与错误内容,官方参考文档:https://www.php.net/manual/zh/memcached.getresultcode.php
echo  $m->getResultCode();
echo  $m->getResultMessage();

  

Supongo que te gusta

Origin blog.51cto.com/bin06/2642488
Recomendado
Clasificación