memcached伪分布式缓存架构

注:本实验以源码方式架构,需要软件包可自行在官方下载或使用三方源下载

特点:
只能缓存静态,不能缓存动态,采用C/S架构,client与server端共存
通过libevent库实现client连接server端进行管理存储

客户端:接收请求,采用分布式算法指定存储位置,调用服务端数据
服务端:接收客户端数据进行缓存数据(存储在内存中)!!易丢失

缓存方式:(2/32次方)
1.余数hash算法:
缺点:如服务器更新,则所有数据无同步冗余效果,易丢失,增加备用服务器无效
特点:分别存储到后端server服务器

2.散列hash算法:
特点:如服务器更新,区域释放,数据实时同步冗余,随时增加备用服务器

注:memcached存储方式:余数算法,散列算法,client端连接server端的数据连接时使用libevent模块连接,进行数据分发

注:php-apcu,用于加快php动态解析能力,此模块可加可不加(增加时使用yum -y install php-apcu即可)
memcached使用的端口为11211

memcached服务架构

注:基于Centos6.7(一台client端,一台memcached端,测试机自行部署或使用telnet连接服务端测试)

vim /etc/sysconfig/network-scripts/ifcfg-eth0 //内网

tar -zxvf libevent-1.4.9-stable.tar.gz -C /usr/src/ //安装lib库用于连接客户端

cd /usr/src/libevent-1.4.9-stable/ //切换到指定目录

./configure --prefix=/usr/local/libevent //定义选项参数

make && make install //编译安装

tar -zxvf memcached-1.2.6.tar.gz -C /usr/src/ //上传并解压

cd /usr/src/memcached-1.2.6/ //切换到指定目录

./configure --prefix=/usr/local/memcached --with-libevent=/usr/local/libevent
//指定选项参数
详解:
–with-libevent:指定libevent连接库软件位置(用于client端连接server端)

make && make install //编译安装

echo “PATH=$PATH:/usr/local/memcached/bin”>>/etc/profile //加入环境变量中

source /etc/profile //立即生效

vim /etc/ld.so.conf //编辑系统额外加载库配置文件(默认系统找不到)
/usr/local/libevent/lib //增加连接依赖库位置(默认系统找不到依赖库)
ldconfig //重新加载配置文件(添加完成后手动刷新配置)
注:默认系统使用连接库时,不会自动识别libevent位置,需手动添加到系统识别的配置中
在这里插入图片描述memcached -d -m 32m -p 11211 -u root //启动memcached服务
详解:
-d:以守护进程运行
-m:指定存储空间大小
-p:监听端口
-u:指定运行用户(也可自己创建一个memcached用户运行)
-l:监听服务器的IP地址
-c:设置最大并发连接数(默认为1024)
-P:保存memcached的pid文件,与-d同时使用

netstat -utpln | grep 11211 //可查看启动的端口

echo “memcached -d -m 32m -p 11211 -u root” >>/etc/rc.local //开机自动启动命令

注:所有服务端存储的数据重启后全部丢失!!

注:服务端检测到端口,即服务器部署完成,如需结束进程可使用kill或pkill
在这里插入图片描述
LAMP搭建基础架构略过

注:实现mamceche客户端时需要使用php软件调用memcache模块实现数据库缓存效果,则需要LAMP或LNMP架构环境,这里则不细说,自行搭建

memcache客户端搭建

tar -zxvf memcache-2.2.7.tgz -C /usr/src/ //上传软件包并解压

cd /usr/src/memcache-2.2.7/ //切换到解压目录

/usr/local/php/bin/phpize //使用php命令,自动生成一个mamcache的文件
注:默认没有config文件,使用php支持的命令即可(默认使用php作为客户端并管理)
在这里插入图片描述在这里插入图片描述注:这里当执行"/usr/local/php/bin/phpize"如报错:解决方案如下
Cannot find autoconf. Please check your autoconf installation and the $PHP_AUTOCONF environment variable. Then, rerun this script. //错误!!!
解决方法:
yum -y install autoconf //安装自动配置软件包尝试

./configure --enable-memcache --with-php-config=/usr/local/php/bin/php-config
//配置并安装客户端
详解:
–enable-memcache //指定当前为客户端模式
–with-php-config=/usr/local/php/bin/php-config //指定php配置文件路径

make && make install //编译并安装

/usr/local/php/lib/php/extensions/no-debug-non-zts-20090626/
//安装完成会自动生成memcache客户端缓存模块文件(方便php调用)
在这里插入图片描述vim /usr/local/php/php.ini //编辑php配置文件
819 extension_dir = “/usr/local/php/lib/php/extensions/no-debug-non-zts-20090626/”
820 extension = memcache.so
//添加memcache模块,即可调用模块使用客户端
在这里插入图片描述vim /usr/local/httpd/htdocs/test3.php //编写测试页面

<?php $memcache = new Memcache(); //建立新的连接 $memcache->connect('192.168.1.100',11211); //连接后端server端及端口 $memcache->set('key','Memcache test successful!',0,60); //set定义存储内容(get可查看) $result = $memcache->get('key'); //查看set定义的值 unset($memecache); //断开连接 echo $result; ?>

//测试调用memcache程序接口来测试memcached服务器与客户端系统工作是否正常
在这里插入图片描述注:memcache客户端连接memcached服务端时即使用键值对方式连接并存储数据的

测试即可:

方式一:自行使用windows测试机测试

方式二:使用linux客户端memcache(telnet)连接服务端memcached进行测试

注:方法二连接成功后,测试语法提示

set key 0 60 2;
//以键值对方式存储指定名称,时间,长度;
get key;
//以键值对方式接收其定义内容;
stats;
//查看当前所有缓存状态,及命中率详情;

没有更多推荐了,返回首页