memcached 快速入門

Memcache簡介

 Memcached是什麼?
    Memcached是由Danga Interactive開發的,高性能的,分佈式的內存對象緩存系統,
      用於在動態應用中減少數據庫負載,提升訪問速度。

 Memcached能緩存什麼?
    通過在內存裏維護一個統一的巨大的hash表,Memcached能夠用來存儲各種格式的數據,
     包括圖像、視頻、文件以及數據庫檢索的結果等。

 Memcached快麼?
    非常快。Memcached使用了libevent(如果可以的話,在linux下使用epoll)來均衡任何數量的打開鏈接,
      使用非阻塞的網絡I/O,對內部對象實現引用計數(因此,針對多樣的客戶端,對象可以處在多樣的狀態),
      使用自己的頁塊分配器和哈希表,因此虛擬內存不會產生碎片並且虛擬內存分配的時間複雜度可以保證爲O(1)。
      Danga Interactive爲提升Danga Interactive的速度研發了Memcached。

 Memcached的特點
    Memcached的緩存是一種分佈式的,可以讓不同主機上的多個用戶同時訪問,
      因此解決了共享內存只能單機應用的侷限,更不會出現使用數據庫做類似事情的時候,
      磁盤開銷和阻塞的發生。

      緩存數據:
      1.在內存中緩存數據    2.數據形態以key->value結構     3.安全度非常差的

Memcache安裝

 Windows下操作

    1 在網上下載memcached-1.2.1-win32.zip。解壓放某個盤下面,比如在c:\memcached
    2 在終端(cmd)下:
        D:\AppServ>memcached.exe -d install     安裝
        D:\AppServ>memcached.exe -d uninstall 卸載
        D:\AppServ>memcached.exe -d start     啓動
        D:\AppServ>memcached.exe -d stop     停止
            memcached.exe -h  獲取所有幫助
    3 在啓動之後連接:
        D:\AppServ> telnet 127.0.0.1 11211   --連接memcache端口11211
        使用quit退出。
    4 其他命令參數:
        啓動Memcache 常用參數
        -p <num>   設置端口號(默認不設置爲: 11211)
        -U <num>   UDP監聽端口(默認: 11211, 0 時關閉) 
        -l <ip_addr> 綁定地址(默認:所有都允許,無論內外網或者本機更換IP,
            有安全隱患,若設置爲127.0.0.1就只能本機訪問)
        -d   獨立進程運行
        ... -d start 啓動memcached服務 
        ... -d restart 重起memcached服務 
        ... -d stop|shutdown 關閉正在運行的memcached服務 
        ... -d install 安裝memcached服務 
        ... -d uninstall 卸載memcached服務 
        -u <username> 綁定使用指定用於運行進程<username>
        -m <num>  允許最大內存用量,單位M (默認: 64 MB)
        -P <file> 將PID寫入文件<file>,可以使得後邊進行快速進程終止, 需要與-d 一起使用
        -M 內存耗盡時返回錯誤,而不是刪除項 
        -c  最大同時連接數,默認是1024 
        -f 塊大小增長因子,默認是1.25 
        -n 最小分配空間,key+value+flags默認是48 
        -h 顯示幫助

 PHP開啓Memcache模塊

    1.phpinfo()檢測是否有memcache擴展

    2.php擴展目錄 extension_dir
        php_memcache.dll放置到php擴展目錄下

    3.php配置文件修改
        extension=php_memcache.dll

    4.重啓apache服務


Linux下安裝操作:
        
    2.1 #爲php環境安裝memcache擴展

        首先下載php7.0支持的擴展包 pecl-memcache-php7.zip
        地址:https://github.com/websupport-sk/pecl-memcache/archive/php7.zip

    1. 將pecl-memcache-php7.zip文件傳到服務器上 /root
    2. 解壓文件後進入此目錄
       unzip pecl-memcache-php7.zip
       cd pecl-memcache-php7
    3. 由於目錄中沒有configure配置環境文件
       執行 /usr/local/php/bin/phpize 來準備一個編譯環境
    4. 配置: 加配置
       ./configure --with-php-config=/usr/local/php/bin/php-config

    5. make && make install 編譯和安裝

    6. 安裝成功後就會產生一個memcache.so文件
       /usr/local/php/lib/php/extensions/no-debug-non-zts-20151012/
    7. 修改php配置文件
       vim  /usr/local/php/etc/php.ini
       添加以下信息
       722行 extension_dir='/usr/local/php/lib/php/extensions/no-debug-non-zts-20151012/';
             extension="memcache.so";
    8. 重啓apache服務即可(查看phpinfo())




    2.2 #安裝memcache服務

       memcached-1.4.4-3.el6.i686.rpm
    
       a.首先掛載ISO鏡像文件  DVD1.ISO
               mount /dev/sr0 /mnt/cdrom/
     
       b.安裝memcached
               yum -y install memcached

       c.添加memcache用戶
               useradd memcache

       d.啓動memcache服務    
               memcached -d -m 128 -l 127.0.0.1 -p 11211 -u memcache 
            
       
            查看端口     
            netstat –tunpl|grep :11211              
            win+r打開命令行窗口  連接測試
            telnet 192.168.185.252 11211     
          注意:
            如果輸入telnet命令的時候 出現telnet不是內部命令
            windows系統->控制面板->程序和功能->打開和關閉Windows功能->勾選 telnet客戶端
    
            stats       memcache命令:查看當前狀態

        e.設置開機自啓動 
               chkconfig memcached on 

   
        f.如何殺掉後臺進程
             pkill memcached

Memcache相關操作
    
####stats 查看狀態
        STAT pid 1552                      服務進程的進程ID
        STAT uptime 3792                服務從啓動到當前所經過的時間,單位是秒。
        STAT time 1262517674              服務器所在主機當前系統的時間,單位是秒。
        STAT version 1.2.6                   組件的版本。這裏是我當前使用的1.2.6。
        STAT pointer_size 32             服務器所在主機操作系統的指針大小,一般爲32或64.
        STAT curr_items 1                   表示存放當前的所有緩存對象的數量。不包括已經從緩存中刪除的對象。
        STAT total_items 2                   表示從啓動到當前,系統存儲過的所有對象數量,包括已經刪除的對象。
        STAT bytes 593                      表示系統存儲緩存對象所使用的存儲空間,單位爲字節。
        STAT curr_connections 2           表示當前系統打開的連接數。
        STAT total_connections 28        表示從memcached服務啓動到當前時間,系統打開過的連接的總數。

set  寫入緩存
    set  鍵名  標記  有效時間  數據的長度
        
      set  love  10     0      10
      i love you
        鍵名
              最大不能超過250個字符
         標記
         是一個16位的無符號的整數,該標誌將和需要存儲的數據一起存儲,並在客戶端get數據時返回
         有效時間
              單位爲秒
         數據長度
              單位是字節
         數據的值
         最大不能超過1024kb

get  獲取緩存
        get  鍵名
        get  love


####delete  刪除緩存
        delete   鍵名
        delete   love
        flush_all清空所有緩存


###PHP與Memcache的使用
    //實例化Memcache
    $memcache = new Memcache();
    
    //連接Memcache
    $memcache->connect('127.0.0.1','11211');
    $memcache->addServer('127.0.0.1','11211');
    
    //保存數據
    $memcache->set('name','xiaohigh',MEMCACHE_COMPRESSED,60);
    
    //獲取數據
    $memcache->get('name')
    
    //清除所有數據
    $memcache->flush();


###PHP Memcahe類
    connect(ip, port)         連接一臺memcache服務器 
    addServer(ip, port)     添加一臺memcache服務器
    getExtendedStats()    獲取連接池中所有的服務器信息
    getServerStatus(host, port)        獲取指定服務器的連接狀態
    add(key, value, tag, expires)             添加一條數據
    replace(key, value, tag, expires)     修改一條數據
    set(key, value, tag, expires)             添加或修改一條數據
    get(key)     根據鍵獲取值
    delete(key) 刪除指定一條數據
    flush() 刪除全部
    close()  關閉連接
    getStats()     獲取memcache服務器信息  返回數組
    getVersion()     獲取m emcache服務器版本號


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章