Memcached

u Memcached的基本概念(初步认识)

是一种缓存技术(内存), 你可以把它想象成一张巨大的内存表:形式[他就是一个服务]

key                    val 

key(字符串)         可以放(字符串【二进制数据[视频、音频、图片],数值,数组,对象,)

 

从访问速度 Mysql 表 heap 

内存>文件>数据库

 

 

 

一个实际的问题分析:

 

 

待讲的实际运用案例!

 

 

 

设计思想?-> 解决方案

 

 

 

快速入门

u 安装我们的memcache服务

步骤

1. 下载

2. 安装

 

卸载 memcached.exe –d uninstall   (-d  daemon 后台程序)

停止服务 memcahced.exe –d stop 

安装 memcached –d install 

 

3. 测试是否安装成功

启动 

memcached –d start 

我们使用 

netstat –an   看看是否有 11211 端口在监听,如果在监听,则说明成.

netstat –anb  (b 可以显示 是哪个程序在监听这个端口.)

如果现在,我要杀掉这个程序 ,windows 下  可以使用任务管理器杀死.

linux  kill -9 进程号         killall 进程名 

 

大部分同学安装Ok, 只有是xpok,

win7 的同学有一部分没有ok

a. 把 memcached.exe 放在 中文目录 这样不行

b. 安装使用的是 普通用户, 你要切换成 administror   ctrl+alt+delete

 

 

如何操作我们的memcached 服务.

 

 

telnet 的具体使用

 

a. 登录到telnet 

语法 

telnet ip 端口 

 

登录到  11211 端口 

telnet 127.0.0.1 11211 

 

如何对mem进行 curd 操作

 

添加

add key1  0  60  5

 

说明  key1 表示 键值 ,可以自己指定

0 表示一个格式, 不变

60 存放在mem多长时间

5 表示存放的数据是多少个字节

 

查询

get 键值

举例

get hsp1 

说明如果 hsp1 不存在,或是是因为时间到而被 memcache 删除了,将得到空.

 

修改

有两种方法

 

replace 键值  时间 大小  【这里有一个注意事项,该键值必须存在】

举例:

replace hsp1 0 40 8

 

第二种方法:

set 键值 时间 大小 【如果这个键存在,则替换,如果不存在,则表示添加一个新的键值】

 

案例

set hsp1 0 60 5 

 

删除 

 

语法

delete 键值

现在,如果我们在mem服务中,需要做一个计数器(存放值一定是一个数),怎么办?

 

key          val

counter        0

add counter 0 0 100

incr key 数字

 

telnet使用ok!

 

u 如何使用memcache 的扩展来 操作我们的memcached  服务 

(1) 把 php_memcache.dll  拷贝 ~php/ext/目录

(2) 在 php.ini 中添加一句话

;引入php_memcache.dll

extension=php_memcache.dll

(3) 使用 PHP 程序 curd

<?php

 

//创建对象

$mem=new Memcache;

//连接到mem服务器

$mem->connect("127.0.0.1",11211);

//添加,该函数返回true

 

if($mem->add("hsp1","china",MEMCACHE_COMPRESSED,60)){

 

echo "添加ok";

}else{

echo "添加err";

}

 

//查询

 

$val=$mem->get("hsp1");

echo "val=$val";

echo "<br/>";

//修改 replace  set

if($mem->replace("hsp1","hello,world",MEMCACHE_COMPRESSED,60)){

echo "replace ok";

}else{

echo "replace 失败";

}

echo "<br/>";

//set 如果存在就替换,不存在,就添加

if($mem->set("hsp1","hello,world , 你好!",MEMCACHE_COMPRESSED,60)){

echo "set ok";

}else{

echo "set 失败";

}

 

echo "<br/>";

//删除

if($mem->delete("hsp1")){

echo "删除ok";

 

}

 

(4) 谈谈细节,加强

讨论memcache中什么数据类型可以放入字符串 ,数字 ,数组对象 ,资源

 

 

当我们在mem中存取对象是,在取的时候,我们需要在前面引入这个类的声明.

 

把这个代码:

<?php

 

//放入数组

$arr=array("1"=>"beijing","2"=>"天津");

//数组默认是序列号 

if($mem->add("city2",json_encode($arr),MEMCACHE_COMPRESSED,60)){

echo "city ok";

}else{

echo "city fail";

}

 

 

//对象

class Dog{

public $age;

public $color;

public function __construct($age,$color){

$this->age=$age;

$this->color=$color;

}

}

 

$dog1=new Dog(30,"红色");

 

if($mem->add("dog1",$dog1,MEMCACHE_COMPRESSED,60)){

echo "dog1 ok";

}else{

echo "dog1 fail";

}

echo "<br/>";

$mydog=$mem->get("dog1");

echo $mydog->age;

var_dump($mydog);

 

$con=mysql_connect("localhost","root","root");

echo "<br/>";

if($con){

//放入mem

if($mem->add("conn",$con,MEMCACHE_COMPRESSED,160)){

echo "资源添加ok";

 

}else{

echo "资源添加失败";

}

}

 

(5) 

 

 

 

 

 

posted @ 2013-08-05 14:20  为了这有限的生命  阅读(403)  评论(0编辑  收藏  举报