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

你可能感兴趣的:(memcached)