memcache使用及语法

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);
}


你可能感兴趣的:(memcache使用及语法)