• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
  • memcached深度分析(6)

    發表于:2015-07-10來源:uml.org.cn作者:火龍果軟件點擊數: 標簽:數據庫
    修改 slabs_clsid 函數,讓它直接返回一個定值(比如 1 ): unsigned int slabs_clsid(size_t size) { return 1;} 修改slabs_init函數,去掉循環創建所有classid屬性的部分,直接

      修改 slabs_clsid 函數,讓它直接返回一個定值(比如 1 ):

    unsigned int slabs_clsid(size_t size) {
            return 1;
    }
    

      修改slabs_init函數,去掉循環創建所有classid屬性的部分,直接添加slabclass[1]:

    slabclass[1].size = 200;                //每chunk200字節
    slabclass[1].perslab = 5000;        //1000000/200
    

      Memcached客戶端

      Memcached是一個服務程序,使用的時候可以根據它的協議,連接到memcached服務器上,發送命令給服務進程,就可以操作上面的數據。為了方便使用,memcached有很多個客戶端程序可以使用,對應于各種語言,有各種語言的客戶端?;贑語言的有libmemcache、APR_Memcache;基于Perl的有Cache::Memcached;另外還有Python、Ruby、Java、C#等語言的支持。PHP的客戶端是最多的,不光有mcache和PECL memcache兩個擴展,還有大把的由PHP編寫的封裝類,下面介紹一下在PHP中使用memcached的方法:

      mcache擴展是基于libmemcache再封裝的。libmemcache一直沒有發布stable版本,目前版本是1.4.0-rc2,可以在這里找到。libmemcache有一個很不好的特性,就是會向stderr寫很多錯誤信息,一般的,作為lib使用的時候,stderr一般都會被定向到其它地方,比如Apache的錯誤日志,而且libmemcache會自殺,可能會導致異常,不過它的性能還是很好的。

      mcache擴展最后更新到1.2.0-beta10,作者大概是離職了,不光停止更新,連網站也打不開了(~_~),只能到其它地方去獲取這個不負責的擴展了。解壓后安裝方法如常:phpize & configure & make & make install,一定要先安裝libmemcache。使用這個擴展很簡單:

    <?php
    $mc = memcache();    // 創建一個memcache連接對象,注意這里不是用new!
    $mc->add_server('localhost', 11211);    // 添加一個服務進程
    $mc->add_server('localhost', 11212);    // 添加第二個服務進程
    $mc->set('key1', 'Hello');    // 寫入key1 => Hello
    $mc->set('key2', 'World', 10);    // 寫入key2 => World,10秒過期
    $mc->set('arr1', array('Hello', 'World'));    // 寫入一個數組
    $key1 = $mc->get('key1');    // 獲取'key1'的值,賦給$key1
    $key2 = $mc->get('key2');    // 獲取'key2'的值,賦給$key2,如果超過10秒,就取不到了
    $arr1 = $mc->get('arr1');    // 獲取'arr1'數組
    $mc->delete('arr1');    // 刪除'arr1'
    $mc->flush_all();    // 刪掉所有數據
    $stats = $mc->stats();    // 獲取服務器信息
    var_dump($stats);    // 服務器信息是一個數組
    ?>
    

      這個擴展的好處是可以很方便地實現分布式存儲和負載均衡,因為它可以添加多個服務地址,數據在保存的時候是會根據hash結果定位到某臺服務器上的,這也是libmemcache的特性。libmemcache支持集中hash方式,包括CRC32、ELF和Perl hash。

      PECL memcache是PECL發布的擴展,目前最新版本是2.1.0,可以在pecl網站得到。memcache擴展的使用方法可以在新一些的PHP手冊中找到,它和mcache很像,真的很像:

    <?php
     
    $memcache = new Memcache;
    $memcache->connect('localhost', 11211) or die ("Could not connect");
     
    $version = $memcache->getVersion();
    echo "Server's version: ".$version."n";
     
    $tmp_object = new stdClass;
    $tmp_object->str_attr = 'test';
    $tmp_object->int_attr = 123;
     
    $memcache->set('key', $tmp_object, false, 10) or die ("Failed to save data at the server");
    echo "Store data in the cache (data will expire in 10 seconds)n";
     
    $get_result = $memcache->get('key');
    echo "Data from the cache:n";
     
    var_dump($get_result);
     
    ?>
    

    原文轉自:http://www.uml.org.cn/sjjm/201411134.asp

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>