Espero crear el servicio Memcache para ayudarlo


Memcache

El papel de Memcache es muy bueno en Internet. El punto simple es reducir la presión de leer la base de datos. El principio también es muy simple:

Los datos solicitados se obtendrán primero de Memcache; de ​​lo contrario, tráigalos de la base de datos y, por cierto, traiga una copia a Memcache.

Cada vez que se actualizan los datos, los datos en Memcache también se actualizan primero; de lo contrario, la base de datos se actualiza y Memcache se actualiza al mismo tiempo.

Por lo tanto, debe tenerse en cuenta que estos datos se almacenan fácilmente.

Uno, descripción general de Memcache

Memcache es un sistema de caché distribuido de alta velocidad, de código abierto, de alto rendimiento y gratuito. Porque Memcache reduce la cantidad de veces que se lee la base de datos almacenando en caché datos y objetos en la memoria. En la actualidad, muchos sitios web lo utilizan para mejorar la velocidad de acceso del sitio web, especialmente para algunos sitios web de gran escala que requieren un acceso frecuente a la base de datos.

Memcache es un HashMap que almacena pares clave-valor. Cualquier dato en la memoria se puede almacenar de una manera clave-valor. La base de datos puede provenir de llamadas a la base de datos o llamadas API. El concepto de diseño de Memcache es pequeño y poderoso. Su diseño simple promueve una implementación rápida, un desarrollo sencillo y resuelve muchos problemas de almacenamiento en caché de datos a gran escala. Su API abierta permite que Memcache se utilice en Java, C / C ++ / C #, Perl , Python y los lenguajes de programación más populares.

Dos, flujo de trabajo de Memcache

Tenga en cuenta que aunque Memcache se llama "caché distribuida", Memcache en sí no tiene funciones distribuidas en absoluto. Los clústeres de Memcache no se comunicarán entre sí. Los llamados "distribuidos" dependen completamente de los programas cliente, como se muestra en la figura. :

marca

Flujo de trabajo de Memcahe: (1) La aplicación ingresa los datos que deben escribirse en el caché;
(2) La API ingresa la Clave en el módulo del algoritmo de enrutamiento, y el algoritmo de razón obtiene el número de servidor de acuerdo con la Clave y la lista de servidores del clúster Memcache;
(3) El Memcache se obtiene del número de servidor Y su dirección IP y número de puerto;
(4) API llama al módulo de comunicación para comunicarse con el servidor con el número especificado, escribir datos en el servidor y completar una operación de escritura de caché distribuida;

Independientemente de si está leyendo el caché o escribiendo en el caché, siempre y cuando se utilice el mismo algoritmo de enrutamiento y la lista de servidores, y la aplicación consulte la misma clave, el cliente Memcache siempre accede al mismo cliente para leer los datos, siempre y cuando todavía estén en el caché del servidor. La caché de los datos puede garantizar un acierto de caché.

Este método de clúster de Memcache también se considera desde el punto de vista de la tolerancia a fallas de la partición. Suponiendo que Node2 esté inactivo, los datos almacenados en Node2 no están disponibles. En este momento, debido a que Node0 y Node2 todavía existen en el clúster, la siguiente solicitud es obtener Node2 Datos almacenados en caché, no debe haber visitas. En este momento, los datos almacenados en caché se obtienen primero de la base de datos y los datos almacenados en caché se almacenan en Node0 o Node1 de acuerdo con el algoritmo de enrutamiento. Este tipo de agrupamiento es muy bueno, pero la desventaja es que el costo es demasiado alto.

2.1: Configuración básica de Mencache

-p 监听的端口
-l 连接的IP地址, 默认是本机
-d start 启动memcached服务
-d restart 重起memcached服务
-d stop|shutdown 关闭正在运行的memcached服务
-d install 安装memcached服务
-d uninstall 卸载memcached服务
-u 以的身份运行 (仅在以root运行的时候有效)
-m 最大内存使用,单位MB。默认64MB
-M 内存耗尽时返回错误,而不是删除项
-c 最大同时连接数,默认是1024
-f 块大小增长因子,默认是1.25
-n 最小分配空间,key+value+flags默认是48
-h 显示帮助

Tres: compila Memcache

La instalación de Memcache se divide en dos procesos: la instalación del servidor Memcache y la instalación del cliente Memcached. La llamada instalación del lado del servidor consiste en instalar Memcache en el servidor (generalmente un sistema Linux) para almacenar datos.

La llamada instalación del lado del cliente se refiere a php (u otros programas, Memcache y otras buenas interfaces api) para usar las funciones proporcionadas por Memcache del lado del servidor, y PHP necesita agregar extensiones.

Se puede ver que el establecimiento de Memcache requiere la ayuda de LAMP o LNMP, y esta publicación de blog utiliza la estructura LAMP.

entorno de laboratorio

Un centos 7 como servidor 20.0.0.41

Un centos 7 como cliente 20.0.0.42

Propósito

  • Configure el servidor y el cliente de Memcache, y verifique si la conexión del servidor es normal visitando el cliente
  • El principio de funcionamiento es:
  • Memcached tiene dos componentes principales: servidor y cliente.
  • En una consulta Memcached, el cliente primero determina la ubicación del servidor del par kv calculando el valor hash de la clave.
  • Cuando se determina el servidor, el cliente enviará una solicitud de consulta al servidor correspondiente para encontrar los datos exactos.
  • Debido a que no hay interacción y protocolo de multidifusión entre estos, el impacto de la interacción de Memcached en la red se minimiza:

3.1: Construye un servidor Memcache

[root@mencache ~]# ls
anaconda-ks.cfg               公共  文档
initial-setup-ks.cfg          模板  下载
libevent-2.1.8-stable.tar.gz  视频  音乐
memcached-1.5.6.tar.gz        图片  桌面
//解压事件包
[root@mencache ~]# tar zxvf libevent-2.1.8-stable.tar.gz -C /opt

//解压源码包
[root@mencache ~]# tar zxvf memcached-1.5.6.tar.gz -C /opt

//查看opt目录
[root@mencache ~]# cd /opt
[root@mencache opt]# ls
libevent-2.1.8-stable  memca:ched-1.5.6  rh

3.2: compile e instale Memcache y la biblioteca de eventos

//安装编译器
[root@mencache opt]# yum install gcc gcc-c++ make -y

[root@server libevent-2.1.8-stable]# cd libevent-2.1.8-stable/
[root@server libevent-2.1.8-stable]# ./configure --prefix=/usr/local/libevent         //指定libevent目录
//编译及安装
[root@server libevent-2.1.8-stable]# make && make install

//memcache依赖于libevent

//进入memcache目录
[root@server libevent-2.1.8-stable]# cd ../memcached-1.5.6/
[root@server memcached-1.5.6]# ./configure \
> --prefix=/usr/local/memcached \	'//指定memcache路径
> --with-libevent=/usr/local/libevent	'//关联libevent事件库'
[root@server memcached-1.5.6]# make && make install

//建立memcache命令软连接
[root@mencache memcached-1.5.6]# ln -s /usr/local/memcached/bin/* /usr/local/bin/

//-u:守护进程  -m:缓存大小32M   -p端口为11211  -u指定用户
[root@mencache memcached-1.5.6]# memcached -d -m 32m -p 11211 -u root

//检查是否开启成功
[root@mencache memcached-1.5.6]# netstat -ntap |grep memcache
tcp        0      0 0.0.0.0:11211           0.0.0.0:*               LISTEN      33866/memcached     
tcp6       0      0 :::11211                :::*                    LISTEN      33866/memcached     

//关闭防火墙
[root@mencache memcached-1.5.6]# systemctl stop firewalld.service 
[root@mencache :memcached-1.5.6]# setenforce 0

3.3: prueba de Memcache [operación de datos]

//安装telnet软件   否则没有连接
[root@mencache memcached-1.5.6]# yum install telnet -y

//进行链接 
[root@mencache memcached-1.5.6]# telnet 127.0.0.1 11211
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character i:s '^]'.

3.4: Operaciones básicas de la base de datos Memcache

//“set”表示按照相应的<key>存储该数据,没有的时候增加,有的覆盖。
//“add”表示按照相应的<key>添加该数据,但是如果该<key>已经存在则会操作失败。
//“replace”表示按照相应的<key>替换数据,但是如果该<key>不存在则操作失败
//cas,检查更新,更新因子需要相等,
//append,键值后追加数据
//prepend,键值前追加数据
//delete,删除
//flush_all,清楚所有缓存数据



Escape character is '^]'.
add shuai 0 0 7      //0:不使用序列号  0:用过期   5:指定字节长度 
1234567                 //上面设置字节长度为6  不为6 就会报错
STORED

get shuai           //查看
VALUE username 0 7     
123456

gets shuai          //查看
VALUE shuai 0 7 2   //更新因子  每次更新+1
1234567
END

set shuai 0 0 8     //更新数据,若键名不存在,则自行添加
12345678
STORED

gets shuai          //查看
VALUE shuai 0 8 3   //更新因子已经更新+1
12345678
END

replace niu 0 0 2    //更新的键名与键值要存在 set:以存在的数值进行替换 没有数值直接添加【相当于add添加】
12
NOT_STORED          //可以看到添加不上

replace shuai 0 0 9   //更新shuai键值
123456789
STORED

gets shuai            //查看
VALUE shuai 0 9 4     //更新因子已经+1   shuai:键值 9:长度 123456789:值
123456789
END

cas shuai 0 0 8 4   //检查更新,更新因子相等则更新返回EXISTS	
78945612
STORED

get shuai
VALUE shuai 0 8     //更新因子已经更新到8
78945612

cas shuai 0 0 8 2  //如果不指定更新因子就会出错
78945612
EXISTS

append shuai 0 0 4  //键值后面增加数据
book
STORED

get shuai           //可以看到boot已经添加成功
VALUE shuai 0 12
78945612book
END

prepend shuai 0 0 2  //键值前面增加数据
un
STORED

get shuai            //添加成功
VALUE shuai 0 14
un78945612book
END

delete shuai       //删除shuai
DELETED
quit
Connection closed by foreign host.

Cuatro: compila el cliente de Memcache

  • Construir LAMP

Aquí no los enumeraremos uno por uno. Puede consultar mi blog anterior: Implementación de la arquitectura LAMP

Inserte la descripción de la imagen aquí

4.1: compilar el cliente de Memcache

[root@localhost ~]# tar zxvf memcache-2.2.7.tgz -C /opt
//增加为PHP的模块后在对memcache进行配置
[root@localhost memcache-2.2.7]# /usr/local/php5/bin/phpize

Zend Extension Api No:   220131226
[root@localhost memcache-2.2.7]# ./configure \
--enbale-memcache \
--with-php-config=/usr/local/php5/bin/php-config 

//
[root@localhost memcache-2.2.7]# ./configure \
--enable-memcache \            //开启memcache
--with-php-config=/usr/local/php5/bin/php-config    //关联php配置文件

//编译
[root@localhost memcache-2.2.7]# make && make install

//共享文件
Installing shared extensions:     /usr/local/php5/lib/php/extensions/no-debug-zts-20131226/

vim /usr/local/php5/php.ini   //搜索并修改下面一行,在新增一行

//搜索extension——dir
; extension_dir = "ext"
//下面添加
extension_dir="/usr/local/php5/lib/php/extensions/no-debug-zts-20131226/"
extension=memcache.so           //指向memcache模块
....省略信息........

4.2: Pruebe el servidor

  • Utilice el cliente para detectar si el servidor está conectado normalmente
<?php
$memcache = new Memcache();
$memcache->connect('20.0.0.41',11211);   //指定memcache服务器地址
$memcache->set('key','Memcache test Successfull!',0,60);
$result = $memcache->get('key');
unset($memcache);
echo$result;
?>


//重启服务
[root@localhost memcache-2.2.7]# service httpd stop
[root@localhost memcache-2.2.7]# service httpd start

4.3: Prueba en el servidor

marca
Con esto concluye este artículo, gracias por ver

Supongo que te gusta

Origin blog.csdn.net/weixin_47151643/article/details/108802137
Recomendado
Clasificación