Memcached&PHP-Memcache安装配置

参考文档:

  1. memcache官网:https://memcached.org/
  2. 参考:http://www.runoob.com/memcached/memcached-install.html
  3. 参考:http://xslwahaha.blog.51cto.com/4738972/1627129

本文简单介绍memcached服务器端的安装配置,与php-memcache客户端连接服务器端的配置与操作。

一.简介

1. 简介

Memcached是一款开源、高性能、分布式内存对象缓存系统,可应用各种需要缓存的场景,其主要目的是通过降低对Database的访问来加速web应用程序。

Memcached一般的使用场景是:通过缓存数据库查询的结果,减少数据库访问次数,以提高动态Web应用的速度、提高可扩展性。

本质上,memcached是一个基于内存的key-value存储,用于存储数据库调用、API调用或页面引用结果的直接数据,如字符串、对象等小块任意数据。

工作流程如下:

2. 注意点

  1. 简单key-value存储:服务器不关心数据本身的意义及结构,只要是可序列化数据即可;存储项由"键、过期时间、可选的标志及数据"四个部分组成。
  2. 功能实现一半依赖于客户端,一半基于服务器端:客户端负责发送存储项至服务器端、从服务端获取数据以及无法连接至服务器时采用相应的动作;服务端负责接收、存储数据,并负责数据项的超时过期。
  3. Memcached虽然是"分布式"缓存服务器,但服务器端并没有分布式功能,即不在服务器间进行数据同步及共享信息,"分布式"完全取决于客户端的实现。
  4. 清理超期数据:默认情况下,Memcached是一个LRU缓存,同时按事先预订的时长清理超期数据;但事实上,memcached不会删除任何已缓存数据,只是在其过期之后不再为客户所见;而且,memcached也不会真正按期限清理缓存,而仅是当get命令到达时检查其时长。

二.环境

1. OS

Server:CentOS-7-x86_64-1511

IP:10.11.4.190

2. Memcached版本

libevent-2.1.8

官网:http://libevent.org/

下载:http://ftp.lfs-matrix.net/pub/blfs/conglomeration/libevent/

memcached-1.4.39

官网:https://memcached.org/

下载:https://memcached.org/files/memcached-1.4.39.tar.gz

三.安装Memcached服务器

Memcached服务器端的安装相对简单。

1. 安装libevent

Memcached依赖于libevent API,libevent是个程序库,它将Linux的epoll、BSD类操作系统的kqueue等事件处理功能封装成统一的接口,即使对服务器的连接数增加,也能发挥O(1)的性能。

[[email protected] ~]# cd /usr/local/src/

[[email protected] src]# wget http://ftp.lfs-matrix.net/pub/blfs/conglomeration/libevent/libevent-2.1.8-stable.tar.gz

[[email protected] src]# tar -zxvf libevent-2.1.8-stable.tar.gz

[[email protected] src]# cd libevent-2.1.8-stable

[[email protected] libevent-2.1.8-stable]# ./configure --prefix=/usr/local/libevent

[[email protected] libevent-2.1.8-stable]# make

[[email protected] libevent-2.1.8-stable]# make install

[[email protected] libevent-2.1.8-stable]# ll /usr/local/libevent/lib/ | grep libevent

#最后1步测试是否安装成功。

2. 安装memcached

[[email protected] ~]# cd /usr/local/src/

[[email protected] src]# tar -zxvf memcached-1.4.39.tar.gz.tar

[[email protected] src]# cd memcached-1.4.39

[[email protected] memcached-1.4.39]# ./configure --prefix=/usr/local/memcached -with-libevent=/usr/local/libevent

[[email protected] memcached-1.4.39]# make

[[email protected] memcached-1.4.39]# make install

#注意编译前,生成Makefile文件时,libevent的路径。

3. 设置环境变量

[[email protected] ~]# ln -s /usr/local/memcached/bin/* /usr/local/bin/

#简单通过软链接的方式设置环境变量。

4. 设置iptables

[[email protected] ~]# vim /etc/sysconfig/iptables

-A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT

-A INPUT -p tcp -m state --state NEW -m tcp --dport 11211 -j ACCEPT

[[email protected] ~]# service iptables restart

#tcp11211端口是memcached默认监听端口。

5. 启动

[[email protected] ~]# /usr/local/memcached/bin/memcached -d -m 256 -u root -l 10.11.4.190 -p 11211 -c 1024 -P /usr/local/memcached/memcached.pid

参数说明:

-d:启动一个守护进程,如果前台运行,配合-vv参数,可查看调试信息(主要是存储的信息);

-m:分配给memcached使用的内存数量,单位是MB;

-u:运行memcached的用户,比如root或者memcached,建议采用非root账号;

-l:服务器监听地址,不设置时默认监听本地所有IP地址;

-p:设置memcached的监听端口,默认为11211;

-c:设置最大并发连接数,默认是1024;

-P:设置保存memcached的pid文件;

-v:输出警告和错误信息;

-vv:打印客户端的请求和返回信息;

-h:打印帮助信息;

-i:打印memcached和libevent的版权信息。

6. 验证

1)端口

[[email protected] ~]# netstat -tunlp

2)telnet连接

可以通过telnet连接memcached服务器进行数据存储,及数据获取。

[[email protected] ~]# telnet 10.11.4.190 11211

version #查看版本

set test 0 0 5 #设置"key", <command name> <key> <flags> <exptime> <bytes>

mymem #输入"value"值,<data block>,字节数与key中的设的"bytes"相同

get test #获取已设的key的数据

quit #退出

#详细的memcached的命令可参考:http://blog.mimvp.com/2015/01/memcache-start-telnet-command-xiangjie/

#除命令输入,其余均是回显。

7. 设置开机启动

[[email protected] ~]# vim /etc/rc.d/init.d/memcached

#!/bin/sh

#

# memcached: MemCached Daemon

#

# chkconfig: - 90 25

# description: MemCached Daemon

#

# Source function library.

. /etc/rc.d/init.d/functions

. /etc/sysconfig/network

MEMCACHED="/usr/local/memcached/bin/memcached"

start()

{

echo -n $"Starting memcached: "

daemon $MEMCACHED -u root -d -m 256 -p 11211 -c 1024 -P /usr/local/memcached/memcached.pid

echo

}

stop()

{

echo -n $"Shutting down memcached: "

killproc memcached

echo

}

[ -f $MEMCACHED ] || exit 0

# See how we were called.

case "$1" in

start)

start

;;

stop)

stop

;;

restart|reload)

stop

start

;;

condrestart)

stop

start

;;

*)

echo $"Usage: $0 {start|stop|restart|reload|condrestart}"

exit 1

esac

exit 0

#注意:第18行参数根据情况调整。

[[email protected] ~]# chmod 775 /etc/rc.d/init.d/memcached

[[email protected] ~]# chkconfig --level 35 memcached on

四.安装配置基于PHP的客户端

Memcache支持多客户端,如perl,php,python,c/c++等等,这里主要基于php配置。

其中nginx与php的详细配置请见:http://blog.chinaunix.net/uid-26168435-id-5715005.html

1. 安装配置nginx

nginx版本:1.12.0

#创建用户

[[email protected] ~]# groupadd www

[[email protected] ~]# useradd -g www -s /sbin/nologin www

#安装依赖包

[[email protected] ~]# yum install pcre pcre-devel openssl openssl-devel zlib zlib-devel -y

#编译安装

[[email protected] ~]# cd /usr/local/src/

[[email protected] src]# wget http://nginx.org/download/nginx-1.12.0.tar.gz

[[email protected] src]# tar -zxvf nginx-1.12.0.tar.gz

[[email protected] src]# cd nginx-1.12.0

[[email protected] nginx-1.12.0]# ./configure --prefix=/usr/local/nginx --without-http_memcached_module --user=www --group=www --with-http_stub_status_module --with-http_ssl_module --with-http_gzip_static_module

[[email protected] nginx-1.12.0]# make

[[email protected] nginx-1.12.0]# make install

[[email protected] nginx-1.12.0]# chown -R www:www /usr/local/nginx

#设置开机启动

[[email protected] ~]# vim /etc/rc.d/init.d/nginx

[[email protected] ~]# chown www:www /etc/rc.d/init.d/nginx

[[email protected] ~]# chmod 775 /etc/rc.d/init.d/nginx

[[email protected] ~]# chkconfig --level 35 nginx on

#开机

[[email protected] ~]# service nginx start

2. 安装配置php

php版本:5.6.31

#安装依赖包

[[email protected] ~]# yum install -y gcc gcc-c++ autoconf libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libpng libpng-devel libxml2 libxml2-devel zlib zlib-devel xml2 xml2-devel openssl openssl-devel glibc glibc-devel glib2 glib2-devel bzip2 bzip2-devel ncurses ncurses-devel curl libcurl-devel gdbm-devel db4-devel libXpm libXpm-devel libX11 libX11-devel gd-devel gmp-devel readline-devel libxslt-devel expat-devel xmlrpc-c xmlrpc-c-devel

#编译安装libmcrypt库,

[[email protected] ~]# cd /usr/local/src/

[[email protected] src]# wget http://nchc.dl.sourceforge.net/project/mcrypt/Libmcrypt/2.5.8/libmcrypt-2.5.8.tar.gz

[[email protected] src]# tar -zxvf libmcrypt-2.5.8.tar.gz

[[email protected] src]# cd libmcrypt-2.5.8

[[email protected] libmcrypt-2.5.8]# ./configure

[[email protected] libmcrypt-2.5.8]# make

[[email protected] libmcrypt-2.5.8]# make install

#编译安装php

[[email protected] ~]# cd /usr/local/src/

[[email protected] src]# wget http://php.net/distributions/php-5.6.31.tar.bz2

[[email protected] src]# tar -jxvf php-5.6.31.tar.bz2

[[email protected] src]# cd php-5.6.31

[[email protected] php-5.6.31]# ./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc --with-mysql --with-pdo-mysql --with-mysqli --with-openssl --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib-dir --with-mhash --with-mcrypt --with-bz2 --enable-zip --with-curl --with-gettext --with-iconv --with-xmlrpc --enable-fpm --enable-sockets --enable-sysvshm --enable-mbstring --enable-pdo --enable-libxml --enable-xml --enable-soap --enable-session --enable-ctype --enable-ftp --enable-bcmath --enable-shmop --enable-inline-optimization --enable-opcache --enable-mbregex --enable-pcntl --enable-cgi --enable-wddx

[[email protected] php-5.6.31]# make

[[email protected] php-5.6.31]# make install

#php.ini文件

[[email protected] ~]# cp /usr/local/src/php-5.6.31/php.ini-production /usr/local/php/etc/php.ini

[[email protected] ~]# ln -s /usr/local/php/etc/php.ini /etc/php.ini

#php-fpm.conf文件,取消";pid = run/php-fpm.pid"的注释,同时修改运行账号通nginx服务的运行账号一致

[[email protected] ~]# cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf

[[email protected] ~]# ln -s /usr/local/php/etc/php-fpm.conf /etc/php-fpm.conf

[[email protected] ~]# sed -i ‘s|;pid = run/php-fpm.pid|pid = run/php-fpm.pid|g‘ /usr/local/php/etc/php-fpm.conf

[[email protected] etc]# sed -i ‘s|user = nobody|user = www|g‘ /usr/local/php/etc/php-fpm.conf

[[email protected] etc]# sed -i ‘s|group = nobody|group = www|g‘ /usr/local/php/etc/php-fpm.conf

#设置开机启动

[[email protected] ~]# cp /usr/local/src/php-5.6.31/sapi/fpm/init.d.php-fpm /etc/rc.d/init.d/php-fpm

[[email protected] ~]# chown www:www /etc/rc.d/init.d/php-fpm

[[email protected] ~]# chmod 755 /etc/rc.d/init.d/php-fpm

[[email protected] ~]# chkconfig --level 35 php-fpm on

#设置nginx支持php

[[email protected] ~]# vim /usr/local/nginx/conf/nginx.conf

#第2行,取消user的注释,修改运行账号为www www,与/usr/local/php/etc/php-fpm.d/www.conf中的user/group配置一致

user www www;

#第45行,添加index.php

index index.html index.htm index.php;

#第65~71行,取消FastCGI server部分location的注释;注意fastcgi_param行的参数,改为$document_root$fastcgi_script_name,或者使用绝对路径

#pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000

#

location ~ \.php$ {

root html;

fastcgi_pass 127.0.0.1:9000;

fastcgi_index index.php;

fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

include fastcgi_params;

}

#验证测试

[[email protected] ~]# echo -e "<?php\nphpinfo();\n?>" > /usr/local/nginx/html/index.php

[[email protected] ~]# chown -R www:www /usr/local/nginx/html/

[[email protected] ~]# chmod -R 700 /usr/local/nginx/html/

[[email protected] ~]# service nginx restart

[[email protected] ~]# service php-fpm start

3. 安装libmemcached

memcached在1.2.4版本(含)以上增加了CAS(Check and Set)协议,即对同一key的多进行程的并发处理问题。

类比数据库,如果同时有多个进程对同一张表的同一数据进行更新,数据库可以锁定整张表,也可以锁定表内某一行数据,memcached的CAS功能与此相似。

php-memcache扩展不支持CAS,需要先安装php-memcached扩展(注意与php-memcache扩展的区别),php-memcached扩展基于libmemcached,所以要先安装libmemcached,即php-memcached的库。

libmemcached版本:1.0.18

https://launchpad.net/libmemcached/+download

#下载libmemcached

[[email protected] ~]# cd /usr/local/src/

[[email protected] src]# wget https://launchpadlibrarian.net/165454254/libmemcached-1.0.18.tar.gz

#编译安装,生成Makefile文件时,切记"--with-memcached"参数

[[email protected] src]# tar -zxvf libmemcached-1.0.18.tar.gz.tar

[[email protected] src]# cd libmemcached-1.0.18

[[email protected] libmemcached-1.0.18]# ./configure --prefix=/usr/local/libmemcached --with-memcached

[[email protected] libmemcached-1.0.18]# make

[[email protected] libmemcached-1.0.18]# make install

4. 安装php-memcached

php-memcached版本:2.2.0(3.0.0及以上版本针对php7.0及以上版本)

http://pecl.php.net/package/memcached

php扩展分原生扩展与第三方扩展,在php的源码解压包下的"ext/"目录下可查看所有的原生扩展,php-memcached及php-memcache属于第三方扩展。

#下载php-memcached

[[email protected] ~]# cd /usr/local/src/

[[email protected] src]# wget http://pecl.php.net/get/memcached-2.2.0.tgz

#编译安装

#phpize: 用于扩展php模块,通过phpize可以建立php的外挂模块

#--enable-memcached: 配置编译环境,编译器编译php源码时使能相应扩展

#--with-php-config:指定php-config文件路径

#--with-libmemcached-dir:指定libmemcached安装目录

#--disable-memcached-sasl:去使能sasl认证,因为没有预安装相应功能

#make:把源码编译成xxxxx.so文件

#make install: 把xxxxx.so文件移动到当前安装php的扩展目录

[[email protected] src]# tar -zxvf memcached-2.2.0.tgz

[[email protected] src]# cd memcached-2.2.0

[[email protected] memcached-2.2.0]# /usr/local/php/bin/phpize

[[email protected] memcached-2.2.0]# ./configure --enable-memcached --with-php-config=/usr/local/php/bin/php-config --with-libmemcached-dir=/usr/local/libmemcached --disable-memcached-sasl

[[email protected] memcached-2.2.0]# make

[[email protected] memcached-2.2.0]# make install

5. 安装php-memcache

php-memcached版本:2.2.7(stable version)

http://pecl.php.net/package/memcache

#下载php-memcache

[[email protected] ~]# cd /usr/local/src/

[[email protected] src]# wget http://pecl.php.net/get/memcache-2.2.7.tgz

#编译安装

[[email protected] src]# tar -zxvf memcache-2.2.7.tgz

[[email protected] src]# cd memcache-2.2.7

[[email protected] memcache-2.2.7]# /usr/local/php/bin/phpize

[[email protected] memcache-2.2.7]# ./configure --enable-memcache --with-php-config=/usr/local/php/bin/php-config

[[email protected] memcache-2.2.7]# make

[[email protected] memcache-2.2.7]# make install

6. 安装php-intl(原生扩展样例,非必须项)

php-intl版本:3.0.0

http://pecl.php.net/package/intl

#php-intl是php国际化扩展,是ICU库的一个包装器,安装php-intl扩展前要先安装ICU库

[[email protected] ~]# yum install -y icu libicu libicu-devel

#下载php-intl

[[email protected] ~]# cd /usr/local/src/

[[email protected] src]# wget http://pecl.php.net/get/intl-3.0.0.tgz

#编译安装

[[email protected] src]# tar -zxvf intl-3.0.0.tgz

[[email protected] src]# cd intl-3.0.0

[[email protected] intl-3.0.0]# /usr/local/php/bin/phpize

[[email protected] intl-3.0.0]# ./configure --enable-intl --with-php-config=/usr/local/php/bin/php-config

[[email protected] intl-3.0.0]# make

[[email protected] intl-3.0.0]# make install

通过查看php源码解压包下的"ext/"目录,php-intl属于原生扩展,理论上可以不用下载,直接在"ext/"下相应扩展目录下编译安装即可。

7. 启用扩展

php启用扩展有2种方式(本文介绍方式1):

  1. 直接在php.ini文件中添加扩展;
  2. 单独创建ini文件,然后php.ini调用这些创建的文件即可(可通过php5enmod工具支持或者手工配置)。

#修改php.ini,添加扩展,可在第732行后添加扩展(非必须),第732行的" extension_dir"路径修改为绝对路径(非必须,相对路径也可)

[[email protected] ~]# vim /usr/local/php/etc/php.ini

[Intl]

extension = intl.so

[Memcached]

extension = memcached.so

[Memcache]

extension = memcache.so

[[email protected] ~]# service php-fpm restart

8. 验证扩展是否安装成功

#查看扩展模块方式

[[email protected] ~]# /usr/local/php/bin/php -m | grep -E ‘memcache|intl‘

#phpinfo()方式,利用前面已经生成的index.php文件即可

http://10.11.4.190/index.php

9. php-memcache访问memcached服务器

#修改index.php

[[email protected] ~]# vim /usr/local/php/etc/php.ini

[[email protected] html]# cp index.php index.php.bak

[[email protected] html]# echo "" > index.php

[[email protected] html]# vim index.php

<?php

$memcache = new Memcache; #创建一个memcache对象

$memcache->connect(‘localhost‘, 11211) or die ("Could not connect"); #连接memcached服务器

$memcache->set(‘key‘, ‘memcache-test‘); #设置1个变量到内存中,key=key, value=memcache-test

$get_value = $memcache->get(‘key‘); #从内存取出key的value

echo $get_value; #回显

?>

#浏览器访问

http://10.11.4.190/index.php

时间: 2024-09-30 21:29:48

Memcached&PHP-Memcache安装配置的相关文章

Memcache与Memcached介绍及安装配置

Memcache学习总结1-Memcache与Memcached介绍及安装配置 也许大家一看到Memcache和Memcached会有点晕,这两者有什么关系又有什么区别呢,下面先给大家说下Memcached,Memcached是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载.它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态.数据库驱动网站的速度. 想必大家也听说过Memcached,就是一个缓存系统,我们可以把一些经常要查询的数据放到缓存中,避免每次要使用

php扩展模块eAccelerator,mysql_pdo,memcache安装配置

基本环境约定:    1.CentOS5.8 x86_64位 采用最小化安装,系统经过了基本优化篇    2.mysql安装路径:/usr/local/mysql    3.源码包存放位置:/home/oldboy/tools    4.源码包编译安装位置:/application 如果你清楚lanp环境搭建,参考以下文章: A.php和apache编译安装方法 B.mysql5.1编译方法和步骤 一.PHP扩展安装实验安装环境    1.检查对应的版本            cat /etc/

Memcached和Memcache安装(64位win7)

一.Memcached和Memcache的区别: 网上关于Memcached和Memcache的区别的理解众说纷纭,我个人的理解是: Memcached是一个内存缓存系统,而Memcache是php的一个扩展,是php用于操作和管理Memcached的工具.如果安装了Memcached但没有安装Memcache,php无法操控Memcached,但是可以使用命令行来操控Memcached:如果安装了Memcache却没安装Memcached,则无法使用.只有同时安装了Memcached和Memc

lnmp+jdk+rrdtool+redis+memcache安装配置

系统要求:本文中的操作系统为CentOS 6.5 64位,以下操作均以root执行. 首先,设置系统语言格式,用系统自带的yum命令安装.升级所需的程序库 #LANG=C yuminstall gcc gcc-c++ libtool libtool-libs kernel kernel-devel libjpeglibjpeg-devel libpng libpng-devel libtiff libtiff-devel gettext gettext-devellibxml2 libxml2-

memcache安装配置

一.memcache说明 memcached是一套开源分布式的高速缓存系统,memcached缺乏认证以及安全管制,这代表应该将memcached服务器放置在防火墙之后,以确保安全. 系统环境:CentOS6.8_x64 二.安装 1.安装gcc yum install -y wget gcc 2.下载安装源码libevent #wget http://cloud.github.com/downloads/libevent/libevent/libevent-2.0.21-stable.tar.

Linux Memcache 安装配置

mkdir /soft cd /soft wget http://memcached.org/files/memcached-1.4.29.tar.gz tar -zxvf memcached-1.4.29.tar.gz cd memcached-1.4.29 ./configure --prefix=/usr/local/memcached make && make install /usr/local/memcached/bin/memcached -d -m 200 -u root

memcached安装配置

简述: memcached,开源的分布式缓存数据系统.高性能的NOSQL . Linux 一.环境配置与安装 01.编译准备环境 yum install -y gcc make cmake autoconf libtool 02.编译memcached #官方下载 wget http://memcached.org/latest #安装源码编译依赖库 yum install -y  libevent-devel #编译安装 site:http://memcached.org/ lastnew:m

Windows下MemCache多端口安装配置

Windows下MemCache环境安装配置的文章很多,但大部分都是用的默认端口11211,如何修改默认端口.如何在一台服务器上配置多个MemCache端口?这正式本文要解决的问题. 1.从微软官网下载rktools.exe (安装只为得到两个exe程序,可以先检查步骤2中的程序文件是否存在.如果不存在,也可以从其它服务器上复制相应的文件到相应目录下.可以直接跳过此步),然后进行安装.     下载地址:http://www.microsoft.com/downloads/details.asp

php5.4之分布式缓存memcache(windows7下安装配置)

一.安装memcache memcached在windows7上的安装问题 现在安装包:http://www.jb51.net/softs/44843.html   memcache的安装包 错误: 通过cmd命令行进入到D:\webEve\memcached(下载后的解压目录) 运行 memcached.exe -d install 报错" failed to install service or service already installed" 解决方法: www.2cto.c