PHPÄڴ滺´æ¹¦ÄÜmemcachedʾÀý

6年以前  |  阅读数:1051 次  |  编程语言:PHP 

ÏÂÎļoµ¥½eÉÜÁËmemcachedÀaµÄÓ¦ÓÃʾÀý,¾ßÓÐÒ»¶¨µÄ²Î¿¼¼ÛÖµ£¬¸ÐÐËȤµÄС»i°eÃÇ¿ÉÒԲο¼Ò»Ï¡£

Ò»¡¢memcached ¼o½e

Ôںܶa³¡ºÏ£¬ÎÒÃǶ¼»aÌýµ½ memcached Õa¸oÃu×Ö£¬µ«ºÜ¶aͬѧֻÊÇÌý¹ý£¬²¢Ã»ÓÐÓùý»oʵ¼ÊÁ˽a¹ý£¬Ö»ÖªµÀËuÊÇÒ»¸oºÜ²»´iµÄ¶«¶«¡£ÕaÀi¼oµ¥½eÉÜһϣ¬memcached ÊǸßЧ¡¢¿iËÙµÄ*Ö²¼Ê½ÄÚ´ae¶ÔÏo»º´aeϵͳ£¬Ö÷ÒªÓÃÓÚ¼ÓËÙ WEB ¶¯Ì¬Ó¦ÓóÌÐo¡£

¶þ¡¢memcached °²×°

Ê×ÏÈÊÇÏÂÔØ memcached ÁË£¬Ä¿Ç°×iаae±¾ÊÇ 1.1.12£¬Ö±½Ó´Ó¹Ù*½ÍøÕ¾¼´¿ÉÏÂÔØµ½ memcached-1.1.12.tar.gz¡£³ý´ËÖ®Ía£¬memcached Óõ½ÁË libevent£¬ÎÒÏÂÔØµÄÊÇ libevent-1.1a.tar.gz¡£

½ÓÏÂÀ´ÊÇ*ֱ𽫠libevent-1.1a.tar.gz ºÍ memcached-1.1.12.tar.gz ½a¿ª°u¡¢±aÒe¡¢°²×°£º

tar -xzf libevent-1.1a.tar.gz

cd libevent-1.1a

./configure --prefix=/usr

make

make install

cd ..

tar -xzf memcached-1.1.12.tar.gz

cd memcached-1.1.12

./configure --prefix=/usr

make

make install

°²×°Íe³ÉÖ®ºo£¬memcached Ó¦¸ÃÔÚ /usr/bin/memcached¡£

Èý¡¢ÔËÐÐ memcached ÊØ»¤³ÌÐo

ÔËÐÐ memcached ÊØ»¤³ÌÐoºÜ¼oµ¥£¬Ö»ÐeÒ»¸oÃuÁiÐм´¿É£¬²»ÐeÒªÐÞ¸ÄÈκÎÅaÖÃÎļþ£¨Ò²Ã»ÓÐÅaÖÃÎļþ¸øÄaÐ޸ģ(C)£º
/usr/bin/memcached -d -m 128 -l 192.168.1.1 -p 11211 -u httpd

²ÎÊý½aÊÍ£º

µ±È»£¬»¹ÓÐÆaËu²ÎÊý¿ÉÒÔÓã¬man memcached һϾͿÉÒÔ¿´µ½ÁË¡£

ËÄ¡¢memcached µÄ¹¤×÷Ô­Ài

Ê×ÏÈ memcached ÊÇÒÔÊØ»¤³ÌÐo½Ê½ÔËÐÐÓÚÒ»¸o»o¶a¸oþÎñÆ÷ÖУ¬Ëaeʱ½ÓÊܿͻ§¶ËµÄÁ¬½Ó²Ù×÷£¬¿Í»§¶Ë¿ÉÒÔÓɸ÷ÖÖÓiÑÔ±aд£¬Ä¿Ç°ÒÑÖªµÄ¿Í»§¶Ë API °uÀ¨ Perl/PHP/Python/Ruby/Java/C#/C µÈµÈ¡£PHP µÈ¿Í»§¶ËÔÚÓe memcached þÎñ½¨Á¢Á¬½ÓÖ®ºo£¬½ÓÏÂÀ´µÄÊÂÇe¾ÍÊÇ´aeÈ¡¶ÔÏoÁË£¬Ã¿¸o±»´aeÈ¡µÄ¶ÔÏo¶¼ÓÐÒ»¸oΨһµÄ±eʶu key£¬´aeÈ¡²Ù×÷¾uͨ¹ýÕa¸o key ½øÐУ¬±£´aeµ½ memcached ÖеĶÔÏoʵ¼ÊÉÏÊÇÅÖÃÄÚ´aeÖе쬲¢²»ÊDZ£´aeÔÚ cache ÎļþÖеģ¬ÕaÒ²ÊÇΪʲô memcached Äܹ»Èç´Ë¸ßЧ¿iËÙµÄÔ­Òo¡£×¢Òa£¬ÕaÐ(C)¶ÔÏo²¢²»Êdz־õģ¬þÎñÍ£Ö¹Ö®ºo£¬Ài±ßµÄÊý¾Ý¾Í»a¶ªÊ§¡£

Îa¡¢PHP ÈçºÎ×÷Ϊ memcached ¿Í»§¶Ë

ÓÐÁ½ÖÖ½¨¿ÉÒÔʹ PHP ×÷Ϊ memcached ¿Í»§¶Ë£¬µ÷Óà memcached µÄ*þÎñ½øÐжÔÏo´aeÈ¡²Ù×÷¡£

µÚÒ»ÖÖ£¬PHP ÓÐÒ»¸o½Ð×o memcache µÄÀ(C)Õ¹£¬Linux ϱaÒeʱÐeÒª´øÉÏ ¨Cenable-memcache[=DIR] Ñ¡Ïi£¬Window ÏÂÔoÔÚ php.ini ÖÐÈ¥µo php_memcache.dll ǰ±ßµÄ×¢ÊÍ*u£¬Ê¹Æa¿ÉÓá£

³ý´ËÖ®Ía£¬»¹ÓÐÒ»ÖÖ½¨£¬¿ÉÒԱܿªÀ(C)Õ¹¡¢ÖØÐ±aÒeËu´øÀ´µÄÂe*³£¬ÄǾÍÊÇÖ±½ÓʹÓà php-memcached-client¡£

±¾ÎÄÑ¡ÓõڶþÖÖ*½Ê½£¬ËaȻЧÂÊ»a±ÈÀ(C)Õ¹¿aÉÔ²iÒ»Ð(C)£¬µ«ÎÊÌa²»´o¡£

Áu¡¢PHP memcached Ó¦ÓÃʾÀý

Ê×ÏÈ ÏÂÔØ memcached-client.php£¬ÔÚÏÂÔØÁË memcached-client.php Ö®ºo£¬¾Í¿ÉÒÔͨ¹ýÕa¸oÎļþÖеÄÀa¡°memcached¡±¶Ô memcached þÎñ½øÐвÙ×÷ÁË¡£Æaʵ´uÂeµ÷ÓÃdz£¼oµ¥£¬Ö÷Òª»aÓõ½µÄ½¨ÓÐ add()¡¢get()¡¢replace() ºÍ delete()£¬½¨ËµÃ÷ÈçÏ£º


    add ($key, $val, $exp = 0)

Íu memcached ÖÐдÈe¶ÔÏo£¬$key ÊǶÔÏoµÄΨһ±eʶ*u£¬$val ÊÇдÈeµÄ¶ÔÏoÊý¾Ý£¬$exp Ϊ¹ýÆÚʱ¼a£¬µ¥Î»ÎªÃe£¬Ä¬ÈÏΪ²»ÏÞʱ¼a£»


    get ($key)

´Ó memcached ÖлñÈ¡¶ÔÏoÊý¾Ý£¬Í¨¹ý¶ÔÏoµÄΨһ±eʶ*u $key »ñÈ¡£»


    replace ($key, $value, $exp=0)

ʹÓà $value Ìae»» memcached ÖбeʶuΪ $key µÄ¶ÔÏoÄÚÈÝ£¬²ÎÊýÓe add() ½*¨Ò»Ñu£¬Ö»ÓÐ $key ¶ÔÏo´aeÔÚµÄÇe¿oϲŻaÆð×÷Óã»


    delete ($key, $time = 0)

ɾ³ý memcached Öбeʶ*uΪ $key µÄ¶ÔÏo£¬$time Ϊ¿ÉÑ¡²ÎÊý£¬±iʾɾ³ý֮ǰÐeÒªµÈ´ý¶a³¤Ê±¼a¡£

ÏÂÃaeÊÇÒ»¶Î¼oµ¥µÄ²aÊÔ´uÂe£¬´uÂeÖжԱeʶ*uΪ 'mykey' µÄ¶ÔÏoÊý¾Ý½øÐдaeÈ¡²Ù×÷£º


    <?php 
    // °uº¬ memcached ÀaÎļþ 
    require_once('memcached-client.php'); 
    // Ñ¡ÏiÉeÖà 
    $options = array( 
     'servers' => array('192.168.1.1:11211'), //memcached *þÎñµÄµØÖ*¡¢¶Ë¿Ú£¬¿ÉÓöa¸oÊý×eÔªËØ±iʾ¶a¸o memcached *þÎñ 
     'debug' => true, //ÊÇ*ñ´o¿ª debug 
     'compress_threshold' => 10240, //³¬¹ý¶aÉÙ×Ö½ÚµÄÊý¾Ýʱ½øÐÐѹËo 
     'persistant' => false //ÊÇ*ñʹÓó־ÃÁ¬½Ó 
     ); 
    // ´´½¨ memcached ¶ÔÏoʵÀý 
    $mc = new memcached($options); 
    // ÉeÖô˽ű¾Ê¹ÓõÄΨһ±eʶ*u 
    $key = 'mykey'; 
    // Íu memcached ÖÐдÈe¶ÔÏo 
    $mc->add($key, 'some random strings'); 
    $val = $mc->get($key); 
    echo "n".str_pad('$mc->add() ', 60, '_')."n"; 
    var_dump($val); 
    // Ìae»»ÒÑдÈeµÄ¶ÔÏoÊý¾ÝÖµ 
    $mc->replace($key, array('some'=>'haha', 'array'=>'xxx')); 
    $val = $mc->get($key); 
    echo "n".str_pad('$mc->replace() ', 60, '_')."n"; 
    var_dump($val); 
    // ɾ³ý memcached ÖеĶÔÏo 
    $mc->delete($key); 
    $val = $mc->get($key); 
    echo "n".str_pad('$mc->delete() ', 60, '_')."n"; 
    var_dump($val); 
    ?>

ÊDz»ÊǺܼoµ¥£¬ÔÚʵ¼ÊÓ¦ÓÃÖУ¬Í¨³£»a°ÑÊý¾Ý¿a²eѯµÄ½a¹u¼¯±£´aeµ½ memcached ÖУ¬Ï´ÎÃÎÊʱֱ½Ó´Ó memcached ÖлñÈ¡£¬¶ø²»ÔÙ×oÊý¾Ý¿a²eѯ²Ù×÷£¬ÕaÑu¿ÉÒÔÔںܴo³Ì¶ÈÉϼoÇaÊý¾Ý¿aµÄ¸ºµ£¡£Í¨³£»a½« SQL Ói¾a md5() Ö®ºoµÄÖµ×÷ΪΨһ±eʶu key¡£Ï±ßÊÇÒ»¸oÀuÓà memcached À´»º´aeÊý¾Ý¿a²eѯ½a¹u¼¯µÄʾÀý£¨´Ë´uÂeƬ¶Î½o½ÓÉϱߵÄʾÀý´uÂe£(C)£º


    <?php 
    $sql = 'SELECT * FROM users'; 
    $key = md5($sql); //memcached ¶ÔÏo±eʶ*u 
    { 
     // ÔÚ memcached ÖÐδ»ñÈ¡µ½»º´aeÊý¾Ý£¬ÔoʹÓÃÊý¾Ý¿a²eѯ»ñÈ¡¼Ç¼¼¯¡£ 
     echo "n".str_pad('Read datas from MySQL.', 60, '_')."n"; 
     $conn = mysql_connect('localhost', 'test', 'test'); 
     mysql_select_db('test'); 
     $result = mysql_query($sql); 
     while ($row = mysql_fetch_object($result)) 
      $datas[] = $row; 
     // ½«Êý¾Ý¿aÖлñÈ¡µ½µÄ½a¹u¼¯Êý¾Ý±£´aeµ½ memcached ÖУ¬ÒÔ¹(C)Ï´Î*ÃÎÊʱʹÓᣠ
     $mc->add($key, $datas); 
    { 
     echo "n".str_pad('Read datas from memcached.', 60, '_')."n"; 
    } 
    var_dump($datas); 
    ?> 

¿ÉÒÔ¿´³o£¬Ê¹Óà memcached Ö®ºo£¬¿ÉÒÔ¼oÉÙÊý¾Ý¿aÁ¬½Ó¡¢²eѯ²Ù×÷£¬Êý¾Ý¿a¸ºÔØÏÂÀ´ÁË£¬½Å±¾µÄÔËÐÐËÙ¶ÈÒ²Ìa¸ßÁË¡£

֮ǰÎÒÔø¾­Ð´¹ýһƪÃuΪ¡¶PHP ʵÏÖ¶aþÎñÆ÷¹²Ïi SESSION Êý¾Ý¡ÎÄÕ£¬ÎÄÖÐµÄ SESSION ÊÇʹÓÃÊý¾Ý¿a±£´aeµÄ£¬ÔÚ²¢¢ÃÎÊÁ¿´oµÄʱºo£¬*þÎñÆ÷µÄ¸ºÔØ»aºÜ´o£¬¾­³£»a³¬³o MySQL ×i´oÁ¬½ÓÊý£¬ÀuÓà memcached£¬ÎÒÃÇ¿ÉÒԺܺõؽa¾oÕa¸oÎÊÌa£¬¹¤×÷Ô­ÀiÈçÏ£º

ÒÔÉϾÍÊDZ¾ÎĵÄÈ«²¿ÄÚÈÝ£¬Ï£Íu¶Ô´o¼ÒµÄѧϰÓÐËu°iÖu£¬Ò²Ï£Íu´o¼Ò¶a¶aÖ§³Ö½Å±¾Ö®¼Ò¡£

Copyright© 2013-2020

All Rights Reserved 京ICP备2023019179号-8