第一讲 memcached的基本概念
memcached是danga的一个项目 ,最早是LiveJounal服务,最初是为访问加速而开发的。
memcached是一个高效的分布式的内存对象缓存系统。他可以支持把各种php的数据(array对象,基本数据类型,对象,资源不能放)放入到其管理的内存中。
内存里维护一个统一的巨大的hash表。
使用memcached的好处是什么?
注意并发量很大
例如做学生系统的查询:
a 传统的方法 直接查数据库
<?php
$stu_id=$_GET['stu_id']
//查询数据库
smarty->assign("view");
?>
b 页面静态化
<?php
$stu_id=$_GET['stu_id']
$html_file="stu_id.html";
if(memcached中有){
//显示
exit
}
?>
c 内存缓存
<?php
$stu_id=$_GET['stu_id']
if(file_exitsts($html_file)){
//显示
exit
}
//查询数据库
smarty->assign("view");
?>
第二讲 memcached的实际操作
安装 memcached -d install
停止 memcached -d stop
启动 安装 memcached -d start
需要的memcached的内存大于64M应当这样启动
memcached -m 256 -d start
LRU least Rcently used 算法
如果需要换端口 memcached -d -m 30 -l 127.0.0.1 -p 9000 -d start
使用工具
telnet 就能够直接使用缓存工具
php程序(1 memcache扩展;2memcached扩展 3 使用socket访问)
curd(create/read/update/delete)
add name 0 60 5 【说明add是指令】 是以键值对的形式存放。
get
set
add
replace
append
prepend
incr
decr
delete
flush_all 全部清空
stats
第二讲 memcached的实际使用
a php.ini中打开配置 extension=php_memcache.dll
b 复制php_memcache.dll
c 编程测试
添加
<?php
/*
* Created on 2012-7-23
*
* write by harry
*
*/
// use curd to discuzz
//1.实例化一个Memcache对象
$mem=new Memcache();
//2 连接到指定的
$mem->connect("127.0.0.1",11211);
//0表示不压缩数据,如要使用压缩MEMCACHE_COMPRESSED
$mem->add("name","shunpin",0,30);
$arr1=array("tinghua","beida");
$mem->add("arr",$arr1,100);
class person{
public $age;
public $name;
public function __construct($age,$name){
$this->age=$age;
$this->name=$name;
}
}
$per1=new person(10,"xiaoming");
$mem->add("per1",$per1,100);
?>
获取
<?php
/*
* Created on 2012-7-23
*
* write by harry
*
*/
$mem=new Memcache;
$mem->connect("127.0.0.1",11211);
$val=$mem->get("name");
echo $val;
$arr1=$mem->get("arr");
var_dump($arr1); //array(2) { [0]=> string(7) "tinghua" [1]=> string(5) "beida" }
//可以存入数值 字符串 boolean 如果放的ture 返回的是1 false 就是空 放入数组
require "add.php";
$per1=$mem->get("per1");
var_dump($per1);
//资源是放不进去的
?>
序列化 网络传输的时候,数据的类型保持不变,否则,类型丢失,先序列化,再发送;
serialize()
json_encode()
memcached的价值分析:
cookie/session/mem
关于如何使用多个memcached 缓存程序
<?php
/*
* Created on 2012-7-23
*
* write by harry
*
*/
//如果网站,需要多个memcached缓存系统
//connect 立即向localhost的11211端口发出连接
$mem=new Memcache();
$mem->addServer("192.168.1.100",11211);
$mem->addServer("192.168.1.200",11211);
$mem->addServer("192.168.1.222",11211);
//创建多个memcache服务使用
$mem->add("name","zs",100);
?>