首页 > 代码库 > 通过memcache动态运行库操作memcached服务,进行CURD

通过memcache动态运行库操作memcached服务,进行CURD

具体学习参考php参考手册:

操作memcached的几种方式:


bool Memcache::add ( string $key , mixed $var [, int $flag [, int $expire ]] )

如果报 expire 设为表示,永不过期.(只要memcache不重新启动,就永远在mem)

exprie 直接给的是秒数,则最大 30*3600*24

如果你希望保持时间超过30  time()+天数*3600*24 即可

mem1.php

<?php
		
    //创建一个mem对象实例
	$mem=new Memcache;
     
	if(!$mem->connect("127.0.0.1",11211)){
		die('连接失败!');
	}

	//增加

	//1.增加一个字串
/*	if($mem->set('key1',"beijing",MEMCACHE_COMPRESSED,60)){
		
		echo '添加ok';
	}*/
	
	//2.添加数值
/*	if($mem->set('key1',100,MEMCACHE_COMPRESSED,60)){
		
		echo '添加ok';
	}*/

	//3.添加数组
	//在添加数组是,根据需要. 希望序列号放入  ,
	//serialize<=>unserialize, 如果根据需要,也可以json_encode <=> json_decode
	$arr=array("bj",'tj');
	if($mem->set('key1',$arr,MEMCACHE_COMPRESSED,time()+31*3600*24)){
		
		echo '添加数组ok99111';
	}
	//4.添加对象
/*	class Dog{
		public $name;
		public $age;
		public function __construct($name,$age){
			$this->name=$name;
			$this->age=$age;
		}
	}

	$dog1=new Dog('小狗',50);
	if($mem->set('key1',$dog1,MEMCACHE_COMPRESSED,60)){
		
		echo '添加对象ok';
	}*/

	//5.添加null 布尔值 ,null就是null,布尔转化为字符串 0
/*	if($mem->set('key1',false,MEMCACHE_COMPRESSED,60)){
		
		echo '添加布尔ok';
	}*/

	//6. 资源类型放入.
/*	$con=mysql_connect("127.0.0.1","root","root");
	if(!$con){
		die('连接数据库失败');
	}
	var_dump($con);
	echo "<br/>"; 添加后资源型变量变为0 目前不支持
	if($mem->set('key1',$con,MEMCACHE_COMPRESSED,60)){
		
		echo '添加资源ok';
	}*/


	//查询

	$val=$mem->get('key1');

	var_dump($val);

	//修改
	//可以使用replace
	if($mem->replace("key11",'hello',MEMCACHE_COMPRESSED,60)){
		echo 'replace ok';
	}else{
		echo 'replace no ok';
	}



	//删除
	echo "<br/>";
	if($mem->delete('key14')){
		echo 'key14 删除';
	}else{
		echo 'key14不存在';
	}



//在另外文件中取出对象时,有个注意的地方,对应php5.2这个版本会提示错误,
//对php5.3这个版本会提示 incomplete 信息, 解决方法是声明类定义即可

mem2.php

<?php

	
	

	//这个文件去操作memcached服务

	 //创建一个mem对象实例
	$mem=new Memcache;
     
	if(!$mem->connect("127.0.0.1",11211)){
		die('连接失败!');
	}

	//在另外文件中取出对象时,有个注意的地方,对应php5.2这个版本会提示错误,
	//对php5.3这个版本会提示 incomplete 信息, 解决方法是声明类定义即可

	class Dog{
		public $name;
		public $age;
		public function __construct($name,$age){
			$this->name=$name;
			$this->age=$age;
		}
	}

	$dog=$mem->get('key1');

	var_dump($dog);

test.php 说明serilize 和 json_encode用法:

图示:


//什么时候使用serilize (将对象直接保存到文件里)什么时候使用json_encode [ajax配合]

<?php


/*	class Dog{
		public $name;
		public $age;
		public function __construct($name,$age){
			$this->name=$name;
			$this->age=$age;
		}
	}
	$dog2=new Dog('小黄',40);
	//我希望把这个对象保存到磁盘. ->serilize

	file_put_contents("d:/my.log",serialize($dog2));
	echo 'save ok!';
	$dog=unserialize(file_get_contents("d:/my.log"));
	echo "<br/>";
	echo $dog->name;

	$arr=array('city1'=>"bj",'city'=>"tj");

	file_put_contents("d:/my2.log",json_encode($arr));*/

	$host="127.0.0.1:1134";
	 list ($ip, $port) = explode (":", $host);

	 echo $ip."===".$port;



通过memcache动态运行库操作memcached服务,进行CURD