1、 MemCache 简介
MemCache 是一个自由、源码开放、高性能、分布式的分布式内存对象缓存系统,用于动态Web 应用以减轻数据库的负载。它经过在内存中缓存数据和对象来减小读取数据库的次数,从而提升了网站访问的速度。 MemCaChe 是一个存储键值对的 HashMap,在内存中对任意的数据(好比字符串、对象等)所使用的 key-value 存储,数据能够来自数据库调用、 API调用,或者页面渲染的结果。 MemCache 设计理念就是小而强大,它简单的设计促进了快速部署、易于开发并解决面对大规模的数据缓存的许多难题,而所开放的 API 使得 MemCache能用于 Java、 C/C++/C#、 Perl、 Python、 PHP、 Ruby 等大部分流行的程序语言。php
二,centos7.2+nginx+php+memcache+mysql
一、 安装 nginx(在 192.168.1.10 主机操做)mysql
(1) 安装依赖包 yum -y install pcre-devel openssl-devel (2) 解压zlib和pcre tar xzf pcre-8.39.tar.gz tar zxf zlib-1.2.8.tar.gz (3) 编译安装nginx
make && make install
(4)建立所需的用户useradd nginx -s /sbin/nologin -M
(4) 连接命令文件ln -s /usr/local/nginx1.14/sbin/nginx /usr/local/sbin/
(5) 开启nginx 并查看端口nginx
二、 安装 php(在 192.168.1.20 主机操做)
(1) 安装依赖包
安装libmcryptweb
yum -y install libxml2-devel libcurl-devel openssl-devel bzip2-devel
(2) 编译安装php
make && make install
(3)复制php.ini配置文件,并修改
修改/etc/php.ini 文件,将 short_open_tag 修改成 on,修改后的内容以下:
short_open_tag = On //支持 php 短标签
Vim /etc/php.inisql
(3) 建立php-fpm服务脚本数据库
cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm chmod +x /etc/init.d/php-fpm
(4)提供 php-fpm 配置文件并编辑:vim
修改164 listen = 0.0.0.0:9000 优化一下 pm.max_children = 50 pm.start_servers = 5 pm.min_spare_servers = 5 pm.max_spare_servers = 35
(4) 开启php并查看端口centos
3.制做测试页面
Nginx
(1)修改nginx配置文件 65
(2)重启nginx
nginx -s reloadapi
php (1) 建立所需文件夹 mkdir -p /var/www/bdqn (2) 建立所需网页 vim /var/www/bdqn/index.php <?php phpinfo(); ?>
浏览器测试浏览器
安装 memcached 服务端(在 192.168.1.30 主机操做)
memcached 是基于 libevent 的事件处理。 libevent 是个程序库,它将 Linux 的 epoll、 BSD 类操做系统的 kqueue 等事件处理功能封装成统一的接口。即便对服务器的链接数增长,也能发挥 I/O 的性能。 memcached 使用这个 libevent 库,所以能在 Linux、 BSD、 Solaris 等操做系统上发挥其高性能。首先先安装 memcached 依赖库 libevent
(1) 安装依赖包libevent
(2) 编译安装memcached
(3) 连接命令文件
ln -s /usr/local/memcached/bin/memcached /usr/local/bin/
(4) 开启memcached并查看端口
5.在php上安装mecache客户端
(1)建立 ./configure
(3) 编译安装memcache
./configure --enable-memcache --with-php-config=/usr/local/php1.10/bin/php-config && make && make install
配置环境变量:
进入用户宿主目录,编辑.bash_profile,为系统环境变量 LD_LIBRARY_PATH 增长新的目录,
须要增长的内容以下:
extension=/usr/local/php1.10/lib/php/extensions/no-debug-zts-20131226/memcache.so
(4) 重启php
/etc/init.d/php-fpm restart
(5) 浏览器测试
(6) php添加一个测试网页
<?php $memcache = new Memcache; $memcache->connect('192.168.1.30', 11211) or die ("Could not connect"); $version = $memcache->getVersion(); echo "Server's version: ".$version."<br/>"; $tmp_object = new stdClass; $tmp_object->str_attr = 'test'; $tmp_object->int_attr = 123; $memcache->set('key', $tmp_object, false, 900) or die ("Failed to save data at the server"); echo "Store data in the cache (data will expire in 900 seconds)<br/>"; $get_result = $memcache->get('key'); echo "Data from the cache:<br/>"; var_dump($get_result); ?>
(7) memcached 安装telnet
yum -y install telnet
(8) 浏览器测试
(9) memcached上telnet测试
vim /etc/php.ini末尾添加 session.save_handler = memcache session.save_path="tcp://192.168.31.250:11211?persistent=1&weight=1&timeout=1&retry_interval=15"
(2)测试 memcache 可用性
在 web 服务器上新建/var/www/bdqn/test1.php 文件
vim /var/www/bdqn/test1.php 添加 <?php session_start(); if (!isset($_SESSION['session_time'])) { $_SESSION['session_time'] = time(); } echo "session_time:".$_SESSION['session_time']."<br />"; echo "now_time:".time()."<br />"; echo "session_id:".session_id()."<br />"; ?>
(3)重启php
/etc/init.d/php-fpm restart
(5) 浏览器测试
七、测试 memcache 缓存数据库数据
(1) 在 Mysql 服务器上建立测试表
(2)php上制做测试页
vim /var/www/bdqn/test3.php添加 <?php $memcachehost = '192.168.1.30'; $memcacheport = 11211; $memcachelife = 60; $memcache = new Memcache; $memcache->connect($memcachehost,$memcacheport) or die ("Could not connect"); $query="select * from test1 limit 10"; $key=md5($query); if(!$memcache->get($key)) { $conn=mysql_connect("192.168.1.50","xgp","123.com"); mysql_select_db(testdb1); $result=mysql_query($query); while ($row=mysql_fetch_assoc($result)) { $arr[]=$row; } $f = 'mysql'; $memcache->add($key,serialize($arr),0,30); $data = $arr ; } else{ $f = 'memcache'; $data_mem=$memcache->get($key); $data = unserialize($data_mem); } echo $f; echo "<br>"; echo "$key"; echo "<br>"; //print_r($data); foreach($data as $a) {echo "number is <b><font color=#FF0000>$a[id]</font></b>"; echo "<br>"; echo "name is <b><font color=#FF0000>$a[name]</font></b>"; echo "<br>"; } ?>
(3)浏览器测试
(4)memcached上telnet测试