Memcached安装以及PHP的调用

安装前准备,先安装编译需要到的包库文件

yum install libevent-devel libevent  -y

1、安装Memcached

# tar vxzf memcached-1.1.12.tar.gz
# cd memcached-1.1.12
# mkdir -p /usr/local/memcached
# ./configure --prefix=/usr/local/memcached
# make
# make install

安装完之后要启动服务

# cd /usr/local/memcached/bin
# ./memcached -d -m 50 -p 11211 -u root -c 1000 -P /tmp/memcached.pid

参数说明 -m 指定使用多少兆的缓存空间;-p 指定要监听的端口; -u 指定以哪个用户来运行;-c 指的最大并发连接数 ; -P是设置保存Memcache的pid文件,我这里是保存在 /tmp/memcached.pid

2、安装memcache PHP模块

# tar vxzf memcache-1.5.tgz
# cd memcache-1.5
# /usr/local/php5/bin/phpize
//注意下面不一样
# ./configure --enable-memcache --with-php-config=/usr/local/php5/bin/php-config --with-zlib-dir
# make
# make install

安装完后会有类似这样的提示:

Installing shared extensions: /usr/local/php/lib/php/extensions/no-debug-non-zts-20050922/

把这个记住,然后修改php.ini,把

extension_dir = "./"
修改为
extension_dir = "/usr/local/php/lib/php/extensions/no-debug-non-zts-20050922/"
并添加一行
extension=memcache.so

一个自动的脚本作为参考,可以自己修改下

编写memcached自启动脚本:

vi /initmemcached

#! /bin/sh
#
# chkconfig: - 55 45
# description: The memcached daemon is a network memory cache service.
# processname: memcached
# config: /etc/sysconfig/memcached
# Source function library.
. /etc/rc.d/init.d/functions
PORT=11211
USER=cmreadwh
MAXCONN=1024
CACHESIZE=64
OPTIONS=""
if [ -f /etc/sysconfig/memcached ];then
. /etc/sysconfig/memcached
fi
# Check that networking is up.
if [ "$NETWORKING" = "no" ]
then
exit 0
fi
RETVAL=0
prog="memcached"
start () {
echo -n $"Starting $prog: "
# insure that /usr/local/memcached/bin/memcached has proper permissions
chown $USER /usr/local/memcached/bin/memcached
daemon /usr/local/memcached/bin/memcached -d -p $PORT -u $USER -m $CACHESIZE -c $MAXCONN -P /tmp/memcached.pid $OPTIONS
RETVAL=$?
echo
[ $RETVAL -eq 0 ] && touch /usr/local/memcached/bin/memcached
}
stop () {
echo -n $"Stopping $prog: "
killproc memcached
RETVAL=$?
echo
if [ $RETVAL -eq 0 ] ; then
rm -f /usr/local/memcached/bin/memcached
rm -f /tmp/memcached.pid
fi
}
restart () {
stop
start
}

# See how we were called.
case "$1" in
start)
start
;;
stop)
stop
;;
status)
status memcached
;;
restart|reload)
restart
;;
condrestart)
[ -f /usr/local/memcached/bin/memcached ] && restart || :
;;
*)
echo $"Usage: $0 {start|stop|status|restart|reload|condrestart}"
exit 1
esac
exit $?

将此脚本cp到/etc/init.d目录下并改名为memcached,然后执行chmod a+x memcached,如下:

# cp init.memcached /etc/init.d/memcached
# chmod 755 /etc/init.d/memcached

将memcached加入系统服务:

# chkconfig --add memcached
# chkconfig memcached on

以服务方式运行memcached

# service memcached start

以上如成功则重启下系统后查看下memcached是否已随系统启动

测试memcache是否配置成功,我们可以用下面几段PHP代码测试一下

测试代码一:

<?php  
$mem = new Memcache;  
$mem->connect("127.0.0.1", 11211);  
$mem->set('key', 'Hello Memcached!', 0, 60);  
$val = $mem->get('key');  
echo $val;  
?>

测试代码二:

<?php  
$memcache = new Memcache;  
$memcache->connect('localhost', 11211) or die ("Could not connect");  
$version = $memcache->getVersion();  
echo "Server's version: ".$version."<br/>n";  
$tmp_object = new stdClass;  
$tmp_object->str_attr = 'test';  
$tmp_object->int_attr = 123;  
$memcache->set('key', $tmp_object, false, 10) or die ("Failed to save data at the server");  
echo "Store data in the cache (data will expire in 10 seconds)<br/>n";  
$get_result = $memcache->get('key');  
echo "Data from the cache:<br/>n";  
var_dump($get_result);  
?>

测试代码三

<?php  
$session_save_path = "tcp://$host:$port?persistent=1&weight=2&timeout=2&retry_interval=10,  ,tcp://$host:$port  ";  
ini_set('session.save_handler', 'memcache');  
ini_set('session.save_path', $session_save_path);  
?>

memcached的基本设置:

-p 监听的端口
-l 连接的IP地址, 默认是本机
-d start 启动memcached服务
-d restart 重起memcached服务
-d stop|shutdown 关闭正在运行的memcached服务
-d install 安装memcached服务
-d uninstall 卸载memcached服务
-u 以的身份运行 (仅在以root运行的时候有效)
-m 最大内存使用,单位MB。默认64MB
-M 内存耗尽时返回错误,而不是删除项
-c 最大同时连接数,默认是1024
-f 块大小增长因子,默认是1.25
-n 最小分配空间,key+value+flags默认是48
-h 显示帮助


接口介绍

Memcache客户端包含两组接口,一组是面向过程的接口,一组是面向对象的接口,具体可以参考PHP手册 “LXXV. Memcache Functions” 这章。

Memcache面向对象的常用接口包括:
Memcache::connect — 打开一个到Memcache的连接
Memcache::pconnect — 打开一个到Memcache的长连接
Memcache::close — 关闭一个Memcache的连接
Memcache::set — 保存数据到Memcache服务器上
Memcache::get — 提取一个保存在Memcache服务器上的数据
Memcache::replace — 替换一个已经存在Memcache服务器上的项目(功能类似Memcache::set)
Memcache::delete — 从Memcache服务器上删除一个保存的项目
Memcache::flush — 刷新所有Memcache服务器上保存的项目(类似于删除所有的保存的项目)
Memcache::getStats — 获取当前Memcache服务器运行的状态
Memcache::addServer — 分布式服务器添加一个服务器


内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://sulao.cn/post/189.html