php memcachedキャッシュの使用概要

8385 ワード

1.複数行レコードをクエリーし、sqlのmd 5値を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とする(md 5後の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);