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下Memcached服务器部署

CentOs6.x安装memcached-1.5.x

centos6 yum 安装memcached

linux centos6.5 安装memcached 和php扩展

centos6.5 64练手安装memcached,PHP调试

Centos6.5 x64 安装Memcached