<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    linugb118--java space

    Java

    php的memcached客戶端memcached

    【轉】php的memcached客戶端memcached

    Tags:  ,  , 
    文章作者:Enjoy 轉載請注明原文鏈接。
    之前在安裝memcache時有提到memcached客戶端是叫memcache,其實還有一個基于libmemcached的客戶端叫memcached,據說性能更好,功能也更多。

    memcache的官方主頁:http://pecl.php.net/package/memcache
    memcached的官方主頁:http://pecl.php.net/package/memcached

    以下是我安裝Memcached版本的PHP模塊的過程記錄:

    wgethttp://download.tangent.org/libmemcached-0.48.tar.gz
    tar zxf libmemcached-0.48.tar.gz
    cd libmemcached-0.48
    ./configure --prefix=/usr/local/libmemcached --with-memcached
    make
    make install

    wget http://pecl.php.net/get/memcached-1.0.2.tgz
    tar zxf memcached-1.0.2.tgz
    cd memcached-1.0.2
    /usr/local/webserver/php/bin/phpize 
    ./configure --enable-memcached --with-php-config=/usr/local/webserver/php/bin/php-config --with-libmemcached-dir=/usr/local/libmemcached
    make
    make install

    在php.ini中加入
    extension=memcached.so
    完成

    另:
    在安裝libmemcached時,如果只用./configure,可能會提示:
    checking for memcached… no
    configure: error: “could not find memcached binary”

    兩者使用起來幾乎一模一樣。

        $mem = new Memcache;
        $mem->addServer($memcachehost, '11211');    
        $mem->addServer($memcachehost, '11212');
        $mem->set('hx','9enjoy');
        echo $mem->get('hx');


        $md = new Memcached;
        $servers = array(
            array($memcachehost, '11211'),
            array($memcachehost, '11212')
        );
        $md->addServers($servers);
        $md->set('hx','9enjoy');
        echo $md->get('hx');


    memcached的方法比memcache多不少,比如getMulti,getByKey,addServers等。
    memcached沒有memcache的connect方法,目前也還不支持長連接。
    memcached 支持 Binary Protocol,而 memcache 不支持,意味著 memcached 會有更高的性能。
    Memcache是原生實現的,支持OO和非OO兩套接口并存,memcached是使用libmemcached,只支持OO接口。
    更詳細的區別:http://code.google.com/p/memcached/wiki/PHPClientComparison


    memcached服務端是集中式的緩存系統,分布式實現方法是由客戶端決定的。
    memcached的分布算法一般有兩種選擇:
    1、根據hash(key)的結果,模連接數的余數決定存儲到哪個節點,也就是hash(key)% sessions.size(),這個算法簡單快速,表現良好。然而這個算法有個缺點,就是在memcached節點增加或者刪除的時候,原有的緩存數據將大規模失效,命中率大受影響,如果節點數多,緩存數據多,重建緩存的代價太高,因此有了第二個算法。
    2、Consistent Hashing,一致性哈希算法,他的查找節點過程如下:
        首先求出memcached服務器(節點)的哈希值,并將其配置到0~232的圓(continuum)上。然后用同樣的方法求出存儲數據的鍵的哈希值,并映射到圓上。然后從數據映射到的位置開始順時針查找,將數據保存到找到的第一個服務器上。如果超過2的32次方后仍然找不到服務器,就會保存到第一臺memcached服務器上。

    memcache在沒有任何配置的情況下,是使用第一種方法。memcached要實現第一種方法,似乎是使用(未確認):
    $md->setOption(Memcached::OPT_HASH, Memcached::HASH_CRC);   

    第二種一致性哈希算法:

    memcache在php.ini中加
    Memcache.hash_strategy =consistent
    Memcache.hash_function =crc32


    memcached在程序中加(未確認)
    $md->setOption(Memcached::OPT_DISTRIBUTION, Memcached::DISTRIBUTION_CONSISTENT);
    $md->setOption(Memcached::OPT_HASH, Memcached::HASH_CRC);   

    $mem->setOption(Memcached::OPT_DISTRIBUTION,Memcached::DISTRIBUTION_CONSISTENT);
    $mem->setOption(Memcached::OPT_LIBKETAMA_COMPATIBLE,true);

    一些參考文檔:
    memcached分布測試報告(一致性哈希情況下的散列函數選擇):http://www.iteye.com/topic/346682
    php模塊memcache和memcached區別:http://hi.baidu.com/dong_love_yan/blog/item/afbe1e12d22e7512203f2e21.html
    PHP模塊:Memcached > Memcache:http://hi.baidu.com/thinkinginlamp/blog/item/717cd42a11f6e491023bf67a.html


    20110509@@UPDATE:
    如果安裝libmemcached有如下出錯提示:
    make[2]: *** [clients/ms_conn.o] Error 1
    make[2]: Leaving directory `/www/soft/libmemcached-0.48'
    make[1]: *** [all-recursive] Error 1
    make[1]: Leaving directory `/www/soft/libmemcached-0.48'
    make: *** [all] Error 2

    可在configure時增加--disable-64bit CFLAGS="-O3 -march=i686"
    即:./configure --prefix=/usr/local/libmemcached --with-memcached --disable-64bit CFLAGS="-O3 -march=i686"

    posted on 2013-03-22 14:19 linugb118 閱讀(376) 評論(0)  編輯  收藏


    只有注冊用戶登錄后才能發表評論。


    網站導航:
     

    My Links

    Blog Stats

    常用鏈接

    留言簿(1)

    隨筆檔案

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 色老头综合免费视频| 久久国产精品国产自线拍免费| 亚洲国产成人乱码精品女人久久久不卡 | 在线a亚洲v天堂网2018| 国产免费内射又粗又爽密桃视频| 亚洲人成电影福利在线播放| 四虎成人免费观看在线网址 | 亚洲无成人网77777| 国产成人无码a区在线观看视频免费| 一级做a爰片久久毛片免费陪 | 四虎影视在线永久免费看黄| 免费人成毛片动漫在线播放| 亚洲人成网站免费播放| 久久亚洲精品视频| 国产精品99久久免费| 嫩草影院在线播放www免费观看| 亚洲人成色777777老人头| 亚洲韩国精品无码一区二区三区| 色妞WWW精品免费视频| 成人电影在线免费观看| 久久久久久亚洲av无码蜜芽| 亚洲国产精品久久久久网站| 免费国产小视频在线观看| 99re热精品视频国产免费| 边摸边脱吃奶边高潮视频免费| 亚洲国产电影在线观看| 国产成人精品日本亚洲专区61| 免费黄色毛片视频| 91久久成人免费| 光棍天堂免费手机观看在线观看| 国产精品日本亚洲777| 亚洲一区电影在线观看| 久久精品国产亚洲香蕉| 亚洲日本中文字幕一区二区三区 | av免费不卡国产观看| 光棍天堂免费手机观看在线观看 | 免费无码黄网站在线看| 精品国产亚洲第一区二区三区| 亚洲伊人久久精品| 噜噜噜亚洲色成人网站∨| 亚洲日韩精品无码专区网址|