Descripción general de Memcached, instrucciones de funcionamiento básicas e implementación

Uno: descripción general de memcached

1.1: Definición de memcached

  • Memcache es un sistema de almacenamiento en caché distribuido de alta velocidad desarrollado por Bard Fitzpartrick de LiveJournal, pero muchos sitios web lo utilizan actualmente para mejorar la velocidad de acceso al sitio web, especialmente para sitios web de gran escala que requieren acceso frecuente a la base de datos. El efecto de mejora es muy significativo. . Memcache es un conjunto de software de código abierto, lanzado bajo la autorización de la licencia BSD

  • El siguiente es el sitio web oficial de Memcache (http://memcached.org/)

Inserte la descripción de la imagen aquí

1.2: El flujo de trabajo de memcached

  • Proceso de trabajo:
    • Primero verifique si los datos solicitados por el cliente están en memcached. Si es así, devuelva directamente los datos solicitados sin realizar ninguna operación en la base de datos. Si los datos solicitados no están en memcached, verifique la base de datos y devuelva los datos obtenidos de la base de datos a El cliente, al mismo tiempo, almacena en caché una copia de los datos en memcached (el cliente de Memcache no es responsable y debe ser implementado explícitamente por el programa);
    • Cada vez que se actualiza la base de datos, los datos en Memcached se actualizan para mantener la coherencia; cuando se agota el espacio de memoria asignado a Memcached, se utilizará la estrategia LRU (Least Recientemente Usado) más la estrategia de falla de expiración. La estrategia de falla es primero Reemplazar y luego reemplazar los datos no utilizados recientemente

1.3: Características de memcached

  • Memcached es esencialmente una memoria caché de valor-clave de memoria, que acelera las aplicaciones web dinámicas al reducir la carga en la base de datos.

  • Memcached no admite la persistencia de datos y todos los datos se pierden después de que se apaga el servidor.

  • El protocolo memcached es simple y utiliza un protocolo basado en líneas de texto.

  • Memcached es un trabajo de múltiples subprocesos, redis es un trabajo de un solo subproceso, cada servidor de Memcached no se comunica entre sí, cada uno accede a los datos de forma independiente y no comparte ninguna información

  • El servidor de Memcached no tiene funciones distribuidas y la implementación distribuida depende del cliente de Memcache.

  • memcached utiliza la caducidad diferida para lograr la caducidad de la clave

  • Memcached garantiza el rendimiento operativo al asignar memoria por adelantado, y la fragmentación de la memoria rara vez ocurre

  • Memcached utiliza E / S sin bloqueo para tomar el modelo de red, el propósito es mejorar el rendimiento de los datos

  • memecached usa el modelo multi-hilo de escuchar / trabajar, la ventaja es que puede hacer un uso completo de multi-core, pero traerá algunos conflictos de bloqueo.

  • ¿Por qué Memcached no admite la persistencia y el análisis de estructuras de datos complejas?

    • La empresa determina la solución técnica. Memcached está diseñado para "administrar la memoria KV en un modo de servicio, no en un modo de biblioteca". Es diferente de otras bases de datos de caché en la biblioteca de componentes de administración de memoria KV. La persistencia y las estructuras de datos complejas no lo son Su intención original

1.4: escenarios de uso de memcached

  • Caché de consulta de datos: carga los datos de la base de datos en memcached para proporcionar la velocidad de acceso del programa

  • Escenario de contador: a través del comando incr / decr para darse cuenta del número de comentarios, recuento de clics, número de operaciones y otros escenarios

  • Implementación de bloqueo optimista: por ejemplo, en el escenario de implementación de múltiples instancias de tareas programadas, la ejecución no repetitiva se logra a través de CAS

  • Comando de procesamiento anti-duplicado: comando CAS

  • La diferencia entre clúster y distribuido: un clúster puede implementar múltiples servicios con la misma configuración en una sola máquina o en múltiples computadoras; una implementación distribuida de múltiples servicios diferentes en múltiples computadoras

1.5: Algoritmo Hash consistente usado en redis / memcached / kafka / hadoop / mycat distribuidos / agrupados

  • Cuando el clúster aumenta o disminuye las máquinas, si se usa el algoritmo hash, una gran área de caché será insuficiente, lo que provocará que el servidor de la base de datos se bloquee, por lo que aparece un algoritmo hash consistente en este momento. Los datos se almacenan en un nodo después del módulo hash, pero el algoritmo hash consistente no puede resolver el problema del equilibrio de carga porque los datos en sí no están equilibrados. Entonces, la versión mejorada es agregar nodos virtuales, porque cuantos más nodos virtuales, los datos son lo más uniformes posible. Sin embargo, es necesario mantener los nodos virtuales y hay un límite superior (2 ^ 32). El algoritmo hash consistente no puede lograr datos completamente uniformes.

Dos: implementar memcached

2.1: Entorno experimental

  • Dos céntimos 7,6

    • servidor memcached: 20.0.0.51, servicio de instalación: libevent-2.1.8-stable.tar.gz

      memcached-1.5.6.tar.gz

    • servidor de lámparas: 20.0.0.52, servicio de instalación: memcached-1.5.6.tar.gz

      httpd-2.4.29.tar.bz2

      apr-1.6.2.tar.gz

      apr-util-1.6.0.tar.gz

      mysql-5.6.26.tar.gz

      php-5.6.11.tar.bz2

2.2: Diagrama esquemático experimental

Inserte la descripción de la imagen aquí

  • El servidor Memcached proporciona una base de datos de caché, instala Memcache en el host de arquitectura LAMP y Memcache proporciona una interfaz API. Llame a esta interfaz en php en LAMP para almacenar en caché los datos en Memcached.

2.3: configurar el servidor memcached

  • Modificar nombre de host
hostnamectl set-hostname memcached
  • Instale la biblioteca de notificación de eventos, libevent (se puede descargar en el sitio web oficial de memcached)
'解压数据包'
tar xzvf libevent-2.1.8-stable.tar.gz -C /opt
cd /opt/libevent-2.1.8
'安装环境源'
yum install -y gcc gcc-c++ make 
'编译、安装libevent'
./configure --prefix=/usr/local/libevent
make && make install

Dado que la instalación de Memcached depende de libevent, libevent debe instalarse primero

  • Instalar memcahed
'解压软件包' 
tar xzvf memcached-1.5.6.tar.gz -C /opt
'手工编译安装'
cd /opt/memcached-1.5.6/
./configure --prefix=/usr/local/memcached --with-libevent=/usr/local/libevent
make && make install

'优化memcached的执行文件'
ln -s /usr/local/memcached/bin/* /usr/local/bin

'开启memcached服务'
memcached -d -m 32m -p 11211 -u root
'-d守护进程;-m指定缓存大小;-p指定端口;-u指定用户'

'验证进程是否开启'
netstat -natp | grep 11211
[root@memcahced ~]# netstat -ntap |grep memc
tcp        0      0 0.0.0.0:11211           0.0.0.0:*               LISTEN      20076/memcached     
tcp6       0      0 :::11211                :::*                    LISTEN      20076/memcached     

'关闭防火墙和SElinux功能'
systemctl stop firewalld.service 
setenforce 0

'使用telnet连接memcached数据库'
'查看是否存在telnet功能,安装Telnet'
rpm -q telnet
yum install telnet -y

'连接数据库'
[root@memcahced ~]# telnet 192.168.43.101 11211
Trying 192.168.43.101...
Connected to 192.168.43.101.
Escape character is '^]'.
  • Operación de comando de la base de datos de caché memcached
Agrupamiento mando descripción
Comando de almacenamiento conjunto Se usa para almacenar el valor en la clave especificada. La clave ya existe, actualice los datos originales correspondientes a la clave
añadir Se usa para almacenar el valor en la clave especificada, si existe, no se actualizará
reemplazar Reemplazar el valor de la clave existente, si no existe, el reemplazo falla
adjuntar El comando se usa para agregar datos al valor de la clave existente
anteponer Agregar datos al valor de la clave existente
caso Comparar y reemplazar, después de la comparación, solo se puede escribir sin ser modificado por otros usuarios
Comando de búsqueda obtener Obtiene el valor almacenado en la clave, si no existe, regresa vacío
consigue Obtenga el valor almacenado con el token CAS, si la clave no existe, la devolución está vacía
Eliminar Eliminar Eliminar la clave existente
Cálculo incr / decr Incrementar o disminuir el valor de los datos de la clave existente
Estadísticas estadisticas Devuelve información estadística como PID, número de versión, número de conexiones, etc.
elementos de estadísticas Muestra el número y la duración del almacenamiento de artículos en cada losa (el número de segundos desde la última visita)
tamaños de estadísticas Muestra el tamaño y la cantidad de todos los elementos.
estadísticas losas Muestra la información de cada losa, incluido el tamaño, el número, el uso, etc. del trozo
Claro flush_all Borrar todo el contenido

2.4: Configurar LAMP y Memcache

  • Modificar nombre de host
hostnamectl set-hostname lamp
  • Configure la arquitectura LAMP (compilada manualmente), consulte mi blog anterior para obtener una configuración específica

Enlace: https://blog.csdn.net/m0_47219942/article/details/107779877 .

  • Configurar memcache
yum install autoconf -y
'解压memcache软件包'
[root@localhost ~]# tar xf memcache-2.2.7.tgz -C /opt/
手工编译安装
[root@localhost ~]# cd /opt/memcache-2.2.7/
[root@localhost memcache-2.2.7]# /usr/local/php5/bin/phpize
'配置,开启memeche,增加PHP模块'
[root@localhost memcache-2.2.7]# ./configure --enable-memcache --with-php-config=/usr/local/php5/bin/php-config
[root@localhost memcache-2.2.7]# vim /usr/local/php5/php.ini
'添加'
extension_dir = "/usr/local/php5/lib/php/extensions/no-debug-zts-20131226/"
extension = memcache.so			'指向memcache模块'
[root@localhost memcache-2.2.7]# cd /usr/local/httpd/htdocs/
'编辑php测试页面'
[root@localhost htdocs]# vim index.php 
<?php
$memcache = new Memcache();
$memcache->connect('20.0.0.52',11211);
$memcache->set('key','Memcache test Successfull!',0,60);
$result = $memcache->get('key');
unset($memcache);
echo $result;
?>
[root@localhost htdocs]# service httpd restart

2.5: verificar la configuración

  • Aparece la siguiente pantalla, que indica una implementación exitosa
    Inserte la descripción de la imagen aquí

Supongo que te gusta

Origin blog.csdn.net/m0_47219942/article/details/108537888
Recomendado
Clasificación