memcached学习笔记

本文详细介绍Memcached的安装步骤及客户端配置,并演示了通过PHP进行基本操作的方法,包括单条记录与批量数据的处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

<?php 
//===========================================================================================================//
一、安装
.编译安装:需要先下载安装包,然后安装,需要工具Libevent
.依赖安装:使用系统自带的安装工具——yum(centos) | apt-get(ubuntu),安装的时候选择安装依赖包Libevent
.安装可以选择Memcached,而不是Memcache,因为它是Memcache的升级版本,运行速度更快

1.客户端安装:
	1.1  服务端安装目录默认是:/usr/bin/memecached
	1.2  # ps -ef | grep memcached :查看所有进程中进程名包含memcach的进程,ps命令用于监控进程,参数e表示监控全部等同于参数“A”,参数f是以ASCII字符显示树状结构以表明进程之间的关系,符号“|”是管道的意思,grep命令是一个强大的文本搜索命令,即全局正则表达式版本,使用权限是所有用户。
	1.3  启动命令:# /usr/bin/memcached -d -l 127.0.0.1 -p 11211 -m 150 -u cpt     参数-d表示以守护进程的模式启动,即terminal退出以后程序依然运行;-l表示ip;-p表示端口;-m是要分配给该进程的内存大小,以M为单位;-u表示用户身份

2.客户端安装:先安装Libmemcached,然后为PHP安装memcached扩展
	2.1  安装Libmemcached:https://launchpad.net/libmemcached
		.下载安装包libmemcached-1.0.18.tar.gz
		.解压:# tar zxvf libmemcached-1.0.18.tar.gz
		.配置路径:# ./configure  --prefix=/usr/lib/libmemcached
		.安装:# make && make install 
	2.2  PHP安装memcached扩展:http://pecl.php.net/package/memcached
		.下载扩展安装包:memcached-2.2.0.tgz
		.解压:# tar zxvf memcached-2.2.0.tgz
		.进入该目录: # cd memcached-2.2.0
		.运行phpize会多出一个配置文件:phpize
		.配置:# ./configure
			如果找不到php-config,请使用./configure --with-php-config=PATH,其中PATH是PHP的安装路径;
			如果找不到安装的扩展的目录(因为我们的Libmemcached安装在别的地方了),请加上参数指明扩展安装的地方 --with-libmemcached-dir=/usr/lib/libmemcached;
			如果不支持sasl.h,请加上参数说明 --disable-memecached-sasl
		.安装:# make && make install
		.安装成功后提示:Installing shared extensions:    /usr/lib/php/modules/
		.在php.ini配置文件最后追加扩展:# vim etc/php.ini,在文件底部G加入:extension=/usr/lib/php/modules/memcached.so 
		.重启服务器即可
	2.3 查看是否安装扩展完成:
		.# php -m | grep memcached
//============================================================================================================//
二、memcache类的操作和封装
1.系统类:
addServer/addServers/getStats/getVersion

2.数据类:
add/set/delete/flush/replace/increment/get

3.进阶类:
setMulti/deleteMulti/getMulti/getResultCode/getResultMessage

4.操作:
$memcache = new Memcached();
$memcache->addServer('127.0.0.1', 11211);

/*多台服务器*/
$ipArr = array(
	array('127.0.0.1', 11211),
	array('102.2.10.22', 11211),
	//...
);
$memcache->addServers($ipArr);

print_r($memcache->getStats());
print_r($memcache->getVersion());

/**
 * $memcache->add(key,val,timeout)
 * add方法第一个参数为key值,第二个参数为value值,第三个参数为失效时间,如果为0表示永久生效
 * add方法重复调用不会覆盖掉原来的值,要覆盖请使用replace()
 * 第一次调用脚本可以成功覆盖掉mkey,第二次就不能了
 */
$memcache->add('mkey','mvalue', 600);
echo $memcache->get('mkey')."\n";

$memcache->replace('mkey', 'mvalue2', 600);
echo $memcache->get('mkey')."\n";

/**
 * $memcache->set(key,val,timeout)方法当不存在的时候新建,存在的话进行覆盖
 */
$memcache->set('mkey', 'mvalue3', 600);
echo $memcache->get('mkey');

/**
 * $memcache->delete(key)方法删除某个key的value值
 */
$memcache->delete('mkey');
echo $memcache->get('mkey');

/**
 * $memcache->flush()清空掉memcached中的所有缓存
 */
$memcache->flush();
echo $memcache->get('mkey');

/**
 * $memcache->increment(key,offset,timeout)方法对整数按某个偏移量进行递增操作
 */
$memcache->set('num', 5, 0);
$memcache->increment('num', 5);
echo $memcache->get('num');

/**
 * $memcache->decrement(key,offset,timeout)方法对整数按某个偏移量进行递减操作
 */
//============================================================================================================//
三、利用memcached进行批量操作
$memcache = new Memcached();
$memcache->addServer('127.0.0.1', 11211);
/*memcached实现批量操作*/
$dataAry = array(
	'key' => 'val',
	'key1' => 'val1',
	'key2' => 'val2',
	'key3' => 'val3',
	'key4' => 'val4',
	'key5' => 'val5',
	'key6' => 'val6',
	'key7' => 'val7',
	'key8' => 'val8',
	'key9' => 'val9',
	'key10' => 'val10'
);

/**
 * $memcache->setMulti(array,timeout)批量处理数据
 */
$memcache->setMulti($dataAry,0);

/**
 * $memcache->getMulti(array())批量获取数据
 */
$result = $memcache->getMulti(array('key','key1','key2'));
print_r($result);
//输出
// Array
// (
//     [key] => val
//     [key1] => val1
//     [key2] => val2
// )

/**
 * $memcache->deleteMulti(array('key','key2'))删除多条数据
 */
$memcache->deleteMulti(array('key'));
echo $memcache->get('key')."\n";
echo $memcache->get('key1')."\n";
/**
 * $memcache->getResultCode()获取执行的结果代码:0为成功,非0失败,具体参考手册
 */
echo $memcache->getResultCode()."\n";
/**
 * $memcache->getResultMessage()获取操作结果的信息
 */
echo $memcache->getResultMessage()."\n";
//===========================================================================================================================//
四、封装自己的memcache类
//应具有如下特点:
//扩展性:既支持memcache又支持memcached
//可调试:
//尽量简便的操作,一个方法多种功能
//详见:http://benbird.cc/post/29



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值