Memcached安装部署for Centos6

1
2
3
4
5
6
7
8
实验环境: Centos6.5minimal 64位系统
服务器IP:192.168.10.22
说明:
1. 安装包已经提前下载好,此文章中不再演示下载步骤
2. 根据笔者习惯,所有的源码包都在/a01/apps/apps_src/
3. 所有的服务安装路径都在/a01/apps/xxxxxxx
4. LNMP源码编译环境自己参考之前文章即可,本文不再演示
5. 注意开启防火墙11211端口,本文不再演示

包版本:

1
2
Memcached: 		memcached-1.4.39.tar.gz、libevent-2.1.8-stable.tar.gz
Memcache的PHP扩展: libmemcached-1.0.18.tar.gz、memcached-3.0.3.tgz

Memcached概述

Memcached是一个高性能的分布式内存对象缓存系统,它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态、数据库驱动网站的速度。Memcached 基于一个存储键/值对的 hashmap。其守护进程(daemon)是用C写的,但是客户端可以用任何语言来编写,并通过memcached协议不守护进程通信。

memcached是一个C/S结构

1
2
server端:memcached			
client端:memcache
1
2
运行模式:C/S
端口号:11211

作用:

1
2
memcached可以缓存MySQL的查询结果,优化MySQL I/O
memcached可以存储session(不建议)

运行机制:

普通情况:user–>web–>mysql

PXIYN9.png

使用memcache情况:user–>web–>memcache–>mysql

PXIa1x.png

1)memcache的优先级大于MySQL,web向数据库取数据的时候,优先去找memcache
2)数据放到memcache会优化MySQL I/O,因为内存比硬盘速度快
3)memcache缓存数据的方式:
1
2
1、将数据全部缓存在内存		
2、缓存到硬盘中 【如果要缓存的数据量不是非常大,不建议】

注意: 缓存断电后,所有缓存数据全部丢失

4)memcache存储缓存数据的方法:

将MySQL查询结果以key=value的形式写入内存
每条数据都有自己的有效期,在有效期内,我们称之为热点数据,过期数据叫脏数据

5)memcache内存缓存大小
1
2
32bit操作系统		2G
64bit操作系统 无限制

注意: 如果本服务器只运行memcache,memcache设置的内存缓存大小应该为物理内存的80%-70%,根据数量来定

6)数据缓存周期

memcache的数据缓存周期可以自定义,即使调设为永久不过期的数据,默认也会在30天后过期

一、编译安装Memcached

1、安装依赖libevent(下载地址http://libevent.org/)

1
2
3
tar -zxvf libevent-2.1.8-stable.tar.gz
cd libevent-2.1.8-stable
./configure --prefix=/a01/apps/libevent && make -j 4 && make install && echo $?

2、解包memcached(下载地址http://memcached.org/downloads)

1
2
tar -zxvf memcached-1.4.39.tar.gz
cd memcached-1.4.39

3、配置

1
./configure --prefix=/a01/apps/memcached --with-libevent=/a01/apps/libevent/

4、四核编译

1
make -j 4
1
2
make的作用:make是把Makefile文件中的指令编译成计算机认识的二进制文件
-j 4的作用:比如我的服务器是4核CPU,同时启用4核来编译,速度更快,2核就-j 2

5、安装

1
make install

6、启动memcached

1
/a01/apps/memcached/bin/memcached -u www -p 11211 -l 192.168.10.22 -P /var/run/memcached.pid -m 128m -c 2048 -d

参数:

1
2
3
4
5
6
7
-u		#运行用户
-p #监听端口
-l #监听地址
-P #pid路径
-m #内存缓存大小
-c #最大并发
-d #作为守护进程在后台运行

7、编写memcached脚本加入系统服务

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
vim /etc/init.d/memcached

#!/bin/bash
#chkconfig: 35 99 20
#description: This is zhe memcached server
MEMCACHED="/a01/apps/memcached/bin/memcached"
USER="www"
PORT="11211"
IP="192.168.10.22"
PID="/var/run/memcached.pid"
NAME="memcached"

case "$1" in
start)
echo "starting $NAME..."
$MEMCACHED -u $USER -p $PORT -l $IP -P $PID -m 128m -c 2048 -d
echo "$NAME $1 is SUCCESS"
;;
stop)
echo "stopping $NAME..."
killall -s QUIT $NAME
echo "$NAME is DOWN"
;;
restart)
$0 stop
$0 start
;;
esac

8、加入系统服务并开机自启

1
2
3
chmod +x /etc/init.d/memcached
chkconfig --add memcached
chkconfig memcached on

9、测试

PXIdc6.png

10、测试使用memcache存储数据是否正常

1
telnet 192.168.10.22 11211

PXIyAH.png

参数说明:

1
2
3
4
5
6
1)set xifu 6 300 10			#往memcached缓存中存储一个键值,标志6,缓存时间300秒(0表示永不过期),字符串长度为10个字节
2)huanglihua #输入数据
3)STORED #该标志表示存入成功(NOT_STORED表示存入失败)
4)get xifu #get命令读缓存的数据
5)END #该标志表示结束
6)quit #退出

二、安装memcached的php扩展

1、安装依赖libmemcached(下载地址https://launchpad.net/libmemcached/+download)

1
yum -y install cyrus-sasl-devel

注意: 必须要先安装该依赖再去安装libmemcached,否则后边开始安装memcached扩展的时候会报错

安装了cyrus-sasl-devel之后再编译libmemcached时会有以下提示

PXIc4A.png

如果没有安装cyrus-sasl-devel,当编译memcached扩展时报错信息如下:

PXIqCn.png

1
2
3
tar -zxvf libmemcached-1.0.18.tar.gz
cd libmemcached-1.0.18
./configure --prefix=/a01/apps/libmemcached && make -j 4 && make install && echo $?

2、解包memcached(下载地址http://pecl.php.net/package/memcached)

1
2
tar -zxvf memcached-3.0.3.tgz
cd memcached-3.0.3

3、配置

1
/a01/apps/php7/bin/phpize

注意: phpize是用来扩展php模块的,通过phpize可以建立php的扩展模块

1
./configure --with-php-config=/a01/apps/php7/bin/php-config --with-libmemcached-dir=/a01/apps/libmemcached/

4、四核编译

1
make -j 4

5、安装

1
make install

6、查看是否生成了该模块

PXo5xx.png

7、配置php.ini

1
2
3
4
vim /etc/php/php.ini

[memcached]
extension=memcached.so

PXooM6.png

8、重启php-fpm并查看是否添加上memcached扩展

1
service php-fpm restart
1
http://192.168.10.22/test.php

PXobZD.png

9、写一个php页面测试memcache和memcached的连接

1
2
3
4
5
6
7
8
vim /a01/apps/nginx/html/memcache.php

<?php
$memcache = new memcached();
$memcache -> addserver('192.168.10.22',11211);
$memcache -> set('test','helloword');
var_dump ($memcache -> get('test'));
?>
1
http://192.168.10.22/memcache.php

PXoXid.png

博主QQ:1012405802
技术交流QQ群:830339411
版权声明:网站内容有原创和转载,如有侵权,请联系删除,谢谢!!
感谢打赏,93bok因你们而精彩!!(支付宝支持花呗)
0%