Memcached安装部署for Centos6
Posted 93bok
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Memcached安装部署for Centos6相关的知识,希望对你有一定的参考价值。
本文源链接地址:https:www.93bok.com
实验环境: Centos6.5minimal 64位系统
服务器IP:192.168.10.22
说明:
1. 安装包已经提前下载好,此文章中不再演示下载步骤
2. 根据笔者习惯,所有的源码包都在/a01/apps/apps_src/
3. 所有的服务安装路径都在/a01/apps/xxxxxxx
4. LNMP源码编译环境自己参考之前文章即可,本文不再演示
5. 注意开启防火墙11211端口,本文不再演示
包版本:
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结构
server端:memcached
client端:memcache
运行模式:C/S
端口号:11211
作用:
memcached可以缓存mysql的查询结果,优化MySQL I/O
memcached可以存储session(不建议)
运行机制:
普通情况:user-->web-->mysql
使用memcache情况:user-->web-->memcache-->mysql
1)memcache的优先级大于MySQL,web向数据库取数据的时候,优先去找memcache
2)数据放到memcache会优化MySQL I/O,因为内存比硬盘速度快
3)memcache缓存数据的方式:
1、将数据全部缓存在内存
2、缓存到硬盘中 【如果要缓存的数据量不是非常大,不建议】
注意: 缓存断电后,所有缓存数据全部丢失
4)memcache存储缓存数据的方法:
将MySQL查询结果以key=value的形式写入内存
每条数据都有自己的有效期,在有效期内,我们称之为热点数据,过期数据叫脏数据
5)memcache内存缓存大小
32bit操作系统 2G
64bit操作系统 无限制
注意: 如果本服务器只运行memcache,memcache设置的内存缓存大小应该为物理内存的80%-70%,根据数量来定
6)数据缓存周期
memcache的数据缓存周期可以自定义,即使调设为永久不过期的数据,默认也会在30天后过期
一、编译安装Memcached
1、安装依赖libevent(下载地址http://libevent.org/)
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)
tar -zxvf memcached-1.4.39.tar.gz
cd memcached-1.4.39
3、配置
./configure --prefix=/a01/apps/memcached --with-libevent=/a01/apps/libevent/
4、四核编译
make -j 4
make的作用:make是把Makefile文件中的指令编译成计算机认识的二进制文件
-j 4的作用:比如我的服务器是4核CPU,同时启用4核来编译,速度更快,2核就-j 2
5、安装
make install
6、启动memcached
/a01/apps/memcached/bin/memcached -u www -p 11211 -l 192.168.10.22 -P /var/run/memcached.pid -m 128m -c 2048 -d
参数:
-u #运行用户
-p #监听端口
-l #监听地址
-P #pid路径
-m #内存缓存大小
-c #最大并发
-d #作为守护进程在后台运行
7、编写memcached脚本加入系统服务
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、加入系统服务并开机自启
chmod +x /etc/init.d/memcached
chkconfig --add memcached
chkconfig memcached on
9、测试
10、测试使用memcache存储数据是否正常
telnet 192.168.10.22 11211
参数说明:
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)
yum -y install cyrus-sasl-devel
注意: 必须要先安装该依赖再去安装libmemcached,否则后边开始安装memcached扩展的时候会报错
安装了cyrus-sasl-devel之后再编译libmemcached时会有以下提示
如果没有安装cyrus-sasl-devel,当编译memcached扩展时报错信息如下:
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)
tar -zxvf memcached-3.0.3.tgz
cd memcached-3.0.3
3、配置
/a01/apps/php7/bin/phpize
注意: phpize是用来扩展php模块的,通过phpize可以建立php的扩展模块
./configure --with-php-config=/a01/apps/php7/bin/php-config --with-libmemcached-dir=/a01/apps/libmemcached/
4、四核编译
make -j 4
5、安装
make install
6、查看是否生成了该模块
7、配置php.ini
vim /etc/php/php.ini
[memcached]
extension=memcached.so
8、重启php-fpm并查看是否添加上memcached扩展
service php-fpm restart
http://192.168.10.22/test.php
9、写一个php页面测试memcache和memcached的连接
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‘));
?>
http://192.168.10.22/memcache.php
以上是关于Memcached安装部署for Centos6的主要内容,如果未能解决你的问题,请参考以下文章
linux centos6.5 安装memcached 和php扩展