zoukankan      html  css  js  c++  java
  • php使用memcached缓存总结

    1. 查询多行记录,以sql的md5值为key,缓存数组(个人觉得最好用的方法)

    复制代码
    $mem = new Memcache();
    $mem->connect('127.0.0.1',11211);
    $id = (int)$_GET['id'];
    $sql = "SELECT * FROM test WHERE id='$id'";
    $key = md5($sql);
    //数据库查询是否已经缓存到memcahced服务器中
    if(!($datas = $mem->get($key)))
    {
        echo 'mysql<br />';
        //如果在memcached中没获取过数据,连mysql获取
        $conn = mysql_connect('localhost','root','123456');
        mysql_select_db('test');
        $result = mysql_query($sql);
        while($row = mysql_fetch_assoc($result))
        {
            $datas[] = $row;
        }
        //再把mysql获取的数据保存到memcached中,供下次使用
        $mem->add($key,$datas);
    }
    else
    {
        echo 'memcache<br />';
    }
    print_r($datas);
    复制代码

    2.查询单行记录,缓存该行记录,以id值为key(也可用md5后的sql语句为键)

    复制代码
    $rangeid = rand(600,1276);
    $rangeid = '1237';
    $mem = new Memcache;
    $mem->connect('127.0.0.1',11211);
    if( ($com = $mem->get($rangeid)) === false) 
    {
        echo '来自mysql<br />';
        $conn = mysql_connect('localhost','root','123456');
        $sql = 'use dedecms';
        mysql_query($sql,$conn);
        $sql = 'set names utf8';
        mysql_query($sql,$conn);
        $sql = 'select aid,actors from dede_addonmovie where aid=' . $rangeid;
        $rs = mysql_query($sql,$conn);
        $com = mysql_fetch_assoc($rs);
        $mem->add($rangeid , $com , false, 60);
    }
    else 
    {
        echo '来自memcache<br />';
    }
    header('content-type:text/html;charset=utf8;');
    print_r($com);
    复制代码

    也可以用另一种方式连接memcache

    复制代码
    $rangeid = rand(600,1276);
    $mconn = memcache_connect('localhost',11211);
    if( ($com = memcache_get($mconn,$rangeid)) === false) 
    {
        $conn = mysql_connect('localhost','root','123456');
        $sql = 'use dedecms';
        mysql_query($sql,$conn);
        $sql = 'set names utf8';
        mysql_query($sql,$conn);
        $sql = 'select aid,actors from dede_addonmovie where aid=' . $rangeid;
        $rs = mysql_query($sql,$conn);
        $com = mysql_fetch_assoc($rs);
        memcache_add($mconn , $rangeid , $com , false, mt_rand(40,120));
    }
    else
    {
        echo 'from cache';
    }
    print_r($com);
    复制代码
    清风明月本无价,近水远山皆有情。
  • 相关阅读:
    委托和事件的区别和联系(转载
    Captcha验证码识别走向3D化
    3DCaptcha for .net
    委托之异步(转自http://www.cnblogs.com/inforasc/archive/2009/10/21/1587756.html
    static的初始化顺序
    各式各样的验证码
    [SQL优化工具]SQL Tuning for SQL Server(转)
    浅析C#深拷贝与浅拷贝 (转载)
    [orcle] oracle截取字符串的函数substr
    struts2.0的工作原理
  • 原文地址:https://www.cnblogs.com/onlylove2015/p/4392019.html
Copyright © 2011-2022 走看看