您的位置:首页 > 数据库 > Memcache

memcache使用及语法

2016-04-21 08:39 459 查看
MemCache的工作流程如下:

先检查客户端的请求数据是否在memcached中,如有,直接把请求数据返回,不再对数据库进行任何操作;如果请求的数据不在memcached中,就去查数据库,把从数据库中获取的数据返回给客户端,同时把数据缓存一份到memcached中(memcached客户端不负责,需要程序明确实现);每次更新数据库的同时更新memcached中的数据,保证一致性;当分配给memcached内存空间用完之后,会使用LRU(Least Recently Used,最近最少使用)策略加上到期失效策略,失效数据首先被替换,然后再替换掉最近未使用的数据。

[2]

Memcache是一个高性能的分布式的内存对象缓存系统,通过在内存里维护一个统一的巨大的hash表,它能够用来存储各种格式的数据,包括图像视频文件以及数据库检索的结果等。简单的说就是将数据调用到内存中,然后从内存中读取,从而大大提高读取速度。

memcache分页效果
<?php
header("content-type:text/html;charset=utf8");
$page=isset($_GET['page'])?$_GET['page']:1;
$mem = new Memcache();
$mem->connect("127.0.0.1","11211");
if($mem->get("data")==""){
$dsn="mysql:host=127.0.0.1;dbname=xxx";
$pdo = new PDO($dsn,"root","root",array(PDO::MYSQL_ATTR_INIT_COMMAND=>'set names utf8'));
$sql="SELECT region_id,parent_id,region_name FROM ecs_region";
$rss=$pdo->query($sql);
$rss->setFetchMode(PDO::FETCH_ASSOC);
$result_arr=$rss->fetchAll();
$mem->set("data",$result_arr,0,0);
$num = 20;
$arr=$mem->get("data");
$page_number=count($mem->get("data"));
$page_con=ceil($page_number/$num);
if($page<=0){
$page=1;
}
if($page>$page_con){
$page=$page_con;
}
$start=($page-1)*$num;
$data=array_slice($arr,$start,$num);     $num = 20;
$arr=$mem->get("data");
$page_number=count($mem->get("data"));
$page_con=ceil($page_number/$num);
if($page<=0){
$page=1;
}
if($page>$page_con){
$page=$page_con;
}
$start=($page-1)*$num;
$num = 20;
$arr=$mem->get("data");
$page_number=count($mem->get("data"));
$page_con=ceil($page_number/$num);
if($page<=0){
$page=1;
}
if($page>$page_con){
$page=$page_con;
}
$start=($page-1)*$num;
$data=array_slice($arr,$start,$num);
}else{
//echo "!";
$num = 20;
$arr=$mem->get("data");
$page_number=count($mem->get("data"));
$page_con=ceil($page_number/$num);
if($page<=0){
$page=1;
}
if($page>$page_con){
$page=$page_con;
}
$start=($page-1)*$num;
$data=array_slice($arr,$start,$num);
//print_r($data);
}
?>
<table align="center">
<?php foreach($data as $k=>$v){?>
<tr>
<td><?php echo $v['region_id'];?></td>
<td><?php echo $v['parent_id'];?></td>
<td><?php echo $v['region_name'];?></td>
</tr>
<?php }?>
</table>
<p align="center" style="color: #f199cd;">
<a href="http://www.whd.com/page.php?page=1">首页</a>
<a href="http://www.whd.com/page.php?page=<?php echo $page-1?>">上一页</a>
<a href="http://www.whd.com/page.php?page=<?php echo $page+1?>">下一页</a>
<a href="http://www.whd.com/page.php?page=<?php echo $page_con?>">尾页</a>
</p>


memcache搜索效果引入jquery.js 用get方法传值到另外一个页面

<html>
<script src='jq.js'></script>
<input type='text' id='searchs'/>
<input type='button' value='搜索' class='search'/>

</html>
<script>
$(function(){
//alert($);
$(document).on("click",".search",function(){
var name=$("#searchs").val();
$.get("sou.php",{name:name},function(e){
alert(e);
})
})
})
</script>


memcache请求的数据

<?php
$name=$_GET['name'];
$mem = new Memcache();
$mem->connect("127.0.0.1","11211");
if($mem->get($name)==""){
$dsn="mysql:host=127.0.0.1;dbname=php7";
$pdo=new PDO($dsn,'root','root');
$pdo->query("set names utf8");
$rss=$pdo->query("select * from day1 where username like '%$name%'");
$rss->setFetchMode(PDO::FETCH_ASSOC);
$result_arr=$rss->fetchAll();
$json=$mem->set($name,$result_arr,0,0);
echo json_encode($json);
}else{
//echo "这不是空的";
$data=$mem->get($name);
echo json_encode($data);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: