memcached的安装和基本操作

memcached是一种被广泛应用的缓存技术,同时还支持分布式,现在在php开发用的也很多,java的话一般用oscache,Ehcache之类的。memcached一般是作为服务安装的现在这个memcached的windows版本很难找到下载的地方了,为了方便后面我会把软件上传到资源。

1.安装mecached服务

先把exe文件放到一个不带中文路径的文件夹里,接下来打开命令行窗口,进入到放有exe文件的目录

安装命令:memcached.exe -d  install

启动命令:memcached.exe -d  start

停止命令:memcached.exe -d  stop

如下图所示:

下面是命令行

上面的做法在xp系统完全没有问题,但是如果是win7就要注意了,打开命令行必须使用管理员身份

2.操作memcache

该服务可以使用telnet来操作,还能通过java,php,c#等客户端来操作,这里介绍的是使用php扩展库来操作memcached

(1)下载php的memcached扩展库php_memcache.dll,名称可能不一样,之后放到php环境的ext文件夹里,需要注意点是版本要对应

(2)在php.ini文件里加这么一句

extension=php_memcache.dll

之后启动或重启apache,为了保险起见应该先用phpinfo()看看扩展是否已经启用了

(3)php连接memcached服务并缓存数据

<?php
 require_once 'User.php';
 //创建memcache对象
 $mem=new Memcache();
 //连接memcached,11211是端口号
 if(!$mem->connect("127.0.0.1",11211)){
 	die("连接mem失败");
 }
 //把字符串放入缓存
 $mem->set("testdata1", "上海市浦东新区川沙新镇",MEMCACHE_COMPRESSED,120);
 //把对象存入缓存
 $u=new User("张学友", "123456");
 $mem->set("userInfo", $u,MEMCACHE_COMPRESSED,120);
 //把boolean值放入缓存
 $mem->set("bool", true,MEMCACHE_COMPRESSED,120);
 //把数值类型放入缓存
 $mem->set("num", 1.2,MEMCACHE_COMPRESSED,120);
 //把关联数组放入缓存
 $mem->set("arr", array(array("city"=>"上海市","area1"=>"浦东新区","area2"=>"徐汇区"),array("city"=>"昆明市","area1"=>"盘龙区","area2"=>"五华区")),MEMCACHE_COMPRESSED,120);
?>

MEMCACHE_COMPRESSED表示启用压缩缓存,写成0表示不压缩,我们可以看到memcache能缓存不同的数据类型,但是资源类型不能被缓存,顺便把User这个php也贴出来

<?php
class User {
	public $username;
	public $password;
	public function __construct($username,$password){
		$this->username=$username;
		$this->password=$password;
	}
	/**
	 * @return the $username
	 */
	public function getUsername() {
		return $this->username;
	}

	/**
	 * @return the $password
	 */
	public function getPassword() {
		return $this->password;
	}

	/**
	 * @param field_type $username
	 */
	public function setUsername($username) {
		$this->username = $username;
	}

	/**
	 * @param field_type $password
	 */
	public function setPassword($password) {
		$this->password = $password;
	}

	
}

?>

尤其需要注意的set里面的最后一个参数,这个参数表示数据什么时候过期,类型为数值单位是秒但是秒数不能超过30天也就是30*3600*24,如果数据缓存时间超过30天

应该写成time()+秒数


(4)获取缓存数据

<?php
 require_once 'User.php';
 //创建memcache对象
 $mem=new Memcache();
 //连接memcached
 if(!$mem->connect("127.0.0.1",11211)){
 	die("连接mem失败");
 }
 //从缓存中取出数据
 $data=$mem->get("testdata1");
 echo $data."<br/>";
 $user=$mem->get("userInfo");
 echo $user->getUsername();
 echo "<br/>=======取得布尔值=======<br/>";
 $bool=$mem->get("bool");
 echo $bool;
 echo "<br/>=======取得数字=======<br/>";
 $num=$mem->get("num");
 echo $num;
 echo "<br/>=======取得二维数组=======<br/>";
 $arr=$mem->get("arr");
 foreach ($arr as $key=>$val){
 	foreach ($val as $key2=>$val2){
 	  echo "$key2:$val2<br/>";
 	}
 }

?>


这里唯一特殊点的就是获取对象的情况,这里要先把User对象引入进来才可以


(5)修改缓存数据

这里有2个方法,一个是set,一个是replace,使用replace如果缓存里没有对应的key值那么就会报错,如果使用set缓存里有就修改没有就创建

<?php
$mem=new Memcache();
//连接memcached
if(!$mem->connect("127.0.0.1",11211)){
	die("连接mem失败");
}
$mem->replace("testdata1", "上海市徐汇区");
?>

(6)删除缓存数据

如果删除单个直接使用delete就行,删除全部就使用flush

<?php
$mem=new Memcache();
//连接memcached
if(!$mem->connect("127.0.0.1",11211)){
	die("连接mem失败");
}
//删除单个数据
//$mem->delete("testdata1");
//删除mem里的全部数据
$mem->flush();
?>

是不是都特别简单呢 得意

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值