Memcached安裝與配置測試

1、Memcached介紹
     Memcached是一款開源的,高性能的分佈式純內存緩存服務軟件,Mem就是內存的意思,cache緩存的意思,d是daemon的意思。Memcache項目誕生於2003年,Memcache服務分爲客戶端和服務端兩部分,client/server。
客戶端軟件:Memcache-2.2.7.tar.gz
服務端軟件:Memcached-1.4.13.tar.gz

2、Memcached 做用
     1.Memcached  純內存,用來緩存後端數據庫的數據,博文,貼子,用戶信息。php

     2.用來實現集羣架構中的 "session" 會話共享存儲前端

     Memcachedb 內存加磁盤 sina開發,Memcached+BDB。用來緩存後端數據庫的數據(博文,貼子,用戶信息),能夠直接作數據庫用(微薄粉絲關注,統計),mysql補充。
     Redis  內存加磁盤,做用同Memcachedb,支持主從複製,持久化等,數據類型更豐富,做爲mysql的補充,redis。
     Squid,nginx,varnish,ats  web緩存,放在web前端。緩存靜態圖片,JS,CSS,HTML,視頻。CDN就是利用這類軟件作的分佈式緩存。

3、Memcached工做原理
   1.C/S架構,2000多行代碼,C語言編寫
   2.基於libevent事件處理,異步IO模型(epoll事件模型)
   3.數據以key/value鍵值對的形式存在
   4.純內存訪問,重啓數據丟失
   5.多個集羣節點互不聯繫(集羣調度算法,通常用一致性HASH)

4、安裝memcached服務端實戰及測試mysql

  1. 安裝memcached服務端實戰:
    wget http://www.monkey.org/~provos/libevent-1.4.13-stable.tar.gz
    ls libevent-1.4.13-stable.tar.gz
    tar xf libevent-1.4.13-stable.tar.gz
    cd libevent-1.4.13-stable
    ./configure
    make
    make install

    tar xf memcached-1.4.13.tar.gz
    cd memcached-1.4.13
    ./configure
    make
    make install

    啓動:
    memcached -d -c 10240 -p 11211 -m 16 -P /var/run/memcached.pid -u root
    memcached -d -c 10240 -p 11212 -m 16 -P /var/run/memcached1.pid -u root -l 10.0.0.6
    關閉:
    pkill memcached

    啓動參數解釋:
    -p  :指定端口
    -m :指定memcached服務能夠緩存數據的最大內存,默認爲64M。
    -u  :指定運行memcached服務的用戶
    -d  :做爲守護進程在後臺運行
    -c  :指定memcached服務的最大的併發鏈接數,默認是1024,按照服務器的併發訪問量來設定。
    -P  :設置保存memcached的pid文件
    -l   :指定監聽的服務器IP地址
    -f   : 調優因子nginx


    [root@LB-111-06 ~]# netstat -tunlp|grep mem #memcache服務端memcached
    tcp        0      0 10.0.0.6:11211              0.0.0.0:*                   LISTEN      1594/memcached      
    udp        0      0 10.0.0.6:11211              0.0.0.0:*                               1594/memcached   web

  2. 測試服務端安裝成果:  
    [root@LB-111-06 ~]# printf "set key008 0 0 10\r\noldboy0987\r\n"|nc 10.0.0.6 11211
    STORED
    [root@LB-111-06 ~]# printf "get key008\r\n"|nc 10.0.0.6 11211              redis

    VALUE key008 0 10
    oldboy0987
    END
    [root@LB-111-06 ~]# printf "delete key008\r\n"|nc 10.0.0.6 11211   
    DELETED
    [root@LB-111-06 ~]# printf "get key008\r\n"|nc 10.0.0.6 11211   
    END

    Memcached狀態查看:
    stats settings         能夠查看一些memcached 設置 例如 線程數。。。
    stats slabs             查看slabs  相關狀況
    stats items            查看Items 相關狀況
    stats sizes             查看存在的Item 個數和大小
    stats cachedump  查看 key value
    stats reset             清理統計數據算法


  3. 安裝memcache客戶端
    wget http://pecl.php.net/get/memcache-2.2.7.tgz
    tar xf memcache-2.2.7.tgz  #在web服務器上安裝
    cd memcache-2.2.7
    /application/php/bin/phpize
    ./configure --enable-memcache --with-php-config=/application/php/bin/php-config --with-zlib-dir
    make
    make install
    sql


  4. 實現集羣中的session共享存儲:
    diff php.ini php.ini
    < session.save_handler = "memcache"
    ---
    > session.save_handler = files
    1490c1490
    < session.save_path = "tcp://10.0.0.6:11211"
    ---
    > ;session.save_path = "/tmp"
    注意說明:
    上面實例是在lamp/lnmp環境中通用的方法,另一種方法是單獨在lamp或者lnmp下實現,不用修改php.ini文件,直接修改下面對應的配置文件:
    1)lamp

    在 httpd.conf 對應的虛擬主機中添加(能夠針對每一個虛擬主機進行memcached共享session)

    session.save_handler = "memcache"

    session.save_path = "tcp://127.0.0.1:11211"

    2)lnmp

    在 php-fpm.conf 對應的pool中添加

    session.save_handler = "memcache"

    session.save_path = "tcp://127.0.0.1:11211"

    3)、檢測是否鏈接成功

    [root@centos memcache-2.2.7]# /usr/local/php/bin/php -m |grep memcache  #有memcache模塊
    memcache
    數據庫


  5. 獲取Memcached服務的狀態信息並解讀重點:
    [root@LB-111-06 tools]# printf "stats\r\n"|nc 10.0.0.6 11211
    STAT pid 5409
    STAT uptime 97543
    STAT time 1446485025
    STAT version 1.4.24
    STAT libevent 1.4.14b-stable
    STAT pointer_size 64
    STAT rusage_user 1.977699
    STAT rusage_system 2.254657
    STAT curr_connections 5
    STAT total_connections 27
    STAT connection_structures 6
    STAT reserved_fds 20
    STAT cmd_get 25
    STAT cmd_set 19
    STAT cmd_flush 0
    STAT cmd_touch 0
    STAT get_hits 23
    STAT get_misses 2
    STAT delete_misses 0
    STAT delete_hits 0
    STAT incr_misses 0
    STAT incr_hits 0
    STAT decr_misses 0
    STAT decr_hits 0
    STAT cas_misses 0
    STAT cas_hits 0
    STAT cas_badval 0
    STAT touch_hits 0
    STAT touch_misses 0
    STAT auth_cmds 0
    STAT auth_errors 0
    STAT bytes_read 2364
    STAT bytes_written 991
    STAT limit_maxbytes 67108864
    STAT accepting_conns 1
    STAT listen_disabled_num 0
    STAT threads 4
    STAT conn_yields 0
    STAT hash_power_level 16
    STAT hash_bytes 524288
    STAT hash_is_expanding 0
    STAT malloc_fails 0
    STAT bytes 319
    STAT curr_items 4
    STAT total_items 19
    STAT expired_unfetched 0
    STAT evicted_unfetched 0
    STAT evictions 0
    STAT reclaimed 0
    STAT crawler_reclaimed 0
    STAT crawler_items_checked 0
    STAT lrutail_reflocked 0
    END
    [root@LB-111-06 tools]# printf "stats\r\n"|nc 10.0.0.6 11211|grep get
    STAT cmd_get 25      #請求25次
    STAT get_hits 23     #成功獲取(命中)23次
    STAT get_misses 2    #丟失兩次
    後端

    注:用memadmin工具也能夠查詢命中率!!@!!

相關文章
相關標籤/搜索