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, 只有是xp都ok,
win7 的同学有一部分没有ok
a. 把 memcached.exe 放在 中文目录 , 这样不行
b. 安装使用的是 普通用户, 你要切换成 administror ctrl+alt+delete
如何操作我们的memcached 服务.
telnet 的具体使用
a. 登录到telnet
语法
telnet ip 端口
登录到 11211 端口
telnet 127.0.0.1 11211
b 如何对mem进行 curd 操作
添加
add key1 0 60 5
说明 key1 表示 键值 ,可以自己指定
0 表示一个格式, 不变
60 存放在mem多长时间
5 表示存放的数据是多少个字节
查询
get 键值
举例
get hsp1
说明如果 hsp1 不存在,或是是因为时间到而被 memcache 删除了,将得到空.
修改
有两种方法
replace 键值 0 时间 大小 【这里有一个注意事项,该键值必须存在】
举例:
replace hsp1 0 40 8
第二种方法:
set 键值 0 时间 大小 【如果这个键存在,则替换,如果不存在,则表示添加一个新的键值】
案例
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)