memcache就是把数据放到内从中,从而减少数据库访问次数,提高响应速度的作用
ubuntu安装 #sudo apt-get install memcached
启动参数:
#memcache -d -u linux用户名-d选项是启动一个守护进程,
-m是分配给Memcache使用的内存数量,单位是MB,
-u是运行Memcache的用户
-l是监听的服务器IP地址
-p是设置Memcache监听的端口,默认11211
-c选项是最大运行的并发连接数,默认是1024
-P是设置保存Memcache的pid文件
启动 后的memcache 可以通过telnet登录(登录后没有提示用户名和密码,直接就输入memcache命令,觉得很不安全.有相关资料的麻烦在评论里告诉一下)
#telnet 127.0.0.1 11211
命令:
stats:状态
add:添加
set:添加/设置
存储命令的格式:
<command name> <key> <flags> <exptime> <bytes>
<data block>
格式说明:
<command name> set/add/replace
<key> 查找关键字
<flags> 客户机使用它存储关于键值对的额外信息
<exptime> 该数据的存活时间,0表示永远
<bytes> 存储字节数
<data block> 存储的数据块(可直接理解为key-value结构中的value)
提示:STORED存储/
get <key> :取值
delete <key> :删除
flush_all:清空全部
quit:退出
php中的memcache测试
<?php
//这个函数模拟数据库查询
function finddb(){
return array('a','b','c','d');
}
$memcache= new Memcache;
$con=$memcache->connect('127.0.0.1');
if(!$con){
$data=finddb();
$zt='没有链接,直接查询数据库';
}else{
if($memcache->get('sta')){
$data=$memcache->get('data');
$zt='直接从memcache获取值';
}else{
$db=finddb();
$status=$memcache->set('data',$db,false,20);
if($status){
$memcache->set('sta','1',false,18);
$data=$memcache->get('data');
$zt='memacache查询数据库,并保存到memcache';
}else{
$data=finddb();
$zt='m没有从数据库中获取得到值,再直接查询数据库';
}
}
}
var_dump($data);
echo '<hr />';
var_dump($zt);
//$sta=$me->getStats();
//var_dump($sta);
//$me->close();
?>