Memcached安裝方法

來源:互聯網
上載者:User

標籤:memcached   php   memcache   

Memcached是一款開源、高效能、分布式記憶體對象緩衝系統,可應用各種需要緩衝的情境,其主要目的是通過降低對Database的訪問來加速web應用程式。它是一個基於記憶體的“索引值對”儲存,用於儲存資料庫調用、API調用或頁面引用結果的直接資料,如字串、對象等。

需要說明下他和Memcache的區別,mencache是PHP伺服器的一個模組,用來和Memcached溝通。

資料存放區方式:Slab Allocation

將分配的記憶體分割成各種尺寸的塊 (chunk),並把尺寸相同的塊分成組 (chunk的集合)

資料到期方式:Lazy Expiration + LRU

Lazy Expiration :memcached內部不會監視記錄是否到期,而是在get時查看記錄的時間戳記,檢查記錄是否到期。這種技術被稱為lazy(惰性)expiration。因此,memcached不會在到期監視上耗費CPU時間

LRU:memcached會優先使用已逾時的記錄的空間,但即使如此,也會發生追加新記錄時空間不足的情況,此時就要使用名為 Least Recently Used(LRU)機制來分配空間。顧名思義,這是刪除“最近最少使用”的記錄的機制。因此,當memcached的記憶體空間不足時(無法從slab class 擷取到新的空間時),就從最近未被使用的記錄中搜尋,並將其空間分配給新的記錄。一、安裝libevent

一、memcached依賴於libevent API,項目首頁:http://libevent.org/

   1:  # tar xf libevent-2.0.21-stable.tar.gz
   2:  # cd libevent-2.0.21
   3:  # ./configure --prefix=/usr/local/libevent
   4:  # make && make install
   5:   
   6:  # echo "/usr/local/libevent/lib" > /etc/ld.so.conf.d/libevent.conf
   7:  # ldconfig

二、安裝配置memcached

   1:  # tar xf memcached-1.4.15.tar.gz
   2:  # cd memcached-1.4.15
   3:  # ./configure --prefix=/usr/local/memcached --with-libevent=/usr/local/libevent
   4:  # make && make install

sysv指令碼

#!/bin/bash## Init file for memcached## chkconfig: - 86 14# description: Distributed memory caching daemon## processname: memcached# config: /etc/sysconfig/memcached. /etc/rc.d/init.d/functions## Default variablesPORT="11211"USER="nobody"MAXCONN="1024"CACHESIZE="64"
RETVAL=0prog="/usr/local/memcached/bin/memcached"desc="Distributed memory caching"lockfile="/var/lock/subsys/memcached"start() {        echo -n $"Starting $desc (memcached): "        daemon $prog -d -p $PORT -u $USER -c $MAXCONN -m $CACHESIZE
        RETVAL=$?        [ $RETVAL -eq 0 ] && success && touch $lockfile || failure        echo        return $RETVAL}stop() {        echo -n $"Shutting down $desc (memcached): "        killproc $prog        RETVAL=$?        [ $RETVAL -eq 0 ] && success && rm -f $lockfile || failure        echo        return $RETVAL}restart() {        stop        start}reload() {        echo -n $"Reloading $desc ($prog): "        killproc $prog -HUP        RETVAL=$?        [ $RETVAL -eq 0 ] && success || failure        echo        return $RETVAL}case "$1" in  start)        start        ;;  stop)        stop        ;;  restart)        restart        ;;  condrestart)        [ -e $lockfile ] && restart        RETVAL=$?        ;;         reload)        reload        ;;  status)        status $prog        RETVAL=$?        ;;   *)        echo $"Usage: $0 {start|stop|restart|condrestart|status}"        RETVAL=1esacexit $RETVAL
賦予執行許可權
   1:  # chmod +x /etc/init.d/memcached
   2:  # chkconfig --add memcached
   3:  # service memcached start

三、memcached的常用選項說明

-l <ip_addr>:指定進程監聽的地址;  
-d: 以服務模式運行;  
-u <username>:以指定的使用者身份運行memcached進程;  
-m <num>:用於快取資料的最大記憶體空間,單位為MB,預設為64MB;  
-c <num>:最大支援的並發串連數,預設為1024;  
-p <num>: 指定監聽的TCP連接埠,預設為11211;  
-U <num>:指定監聽的UDP連接埠,預設為11211,0表示關閉UDP連接埠;  
-t <threads>:用於處理入站請求的最大線程數,僅在memcached編譯時間開啟了支援線程才有效;--enable-threads  
-f <num>:設定Slab Allocator定義預先分配記憶體空間大小固定的塊時使用的增長因子;  
-M:禁止使用LRU演算法;  
-n: 指定最小的slab chunk大小;單位是位元組;  
-S: 啟用sasl進行使用者認證;

四、測試

memcached

儲存類命令:set, add, replace, append, prepend

擷取資料類命令:get, delete, incr/decr  
統計類命令:stats, stats items, stats slabs, stats sizes  
清理命令: flush_all

訪問Memcached:telnet 主機名稱 連接埠號碼  
查看總狀態:stats  
查看某項狀態:stats curr_connections

&#160;

&#160;

PS:我看到過有的介紹說是“Memcached單進程最大使用記憶體為2G,如果想用更多記憶體,可以用用其他連接埠再開啟”我沒測試過,寫出來當個備忘。

上面很多內容都引用了了mixi.jp 公司編寫的《Memcached全面剖析》,大家對memcached感興趣請到通過下面連結查閱,講解的非常清晰。

http://blog.charlee.li/memcached-pdf/

&#160;


五、為PHP安裝memcache模組用作和memcached通訊

   1:  # tar xf memcache-2.2.5.tgz
   2:  # cd memcache-2.2.5
   3:  /usr/local/php/bin/phpize
   4:  # ./configure --with-php-config=/usr/local/php/bin/php-config --enable-memcache
   5:  # make && make install

編譯後會輸出/path/memcache.so檔案,然後在/etc/php.ini中添加此行extension=/path/memcache.so

六、測試php和memcached工作是否成功

<?php$mem = new Memcache;$mem->connect("127.0.0.1", 11211)  or die("Could not connect");#vim memcached.php$version = $mem->getVersion();echo "Server‘s version: ".$version."<br/>\n";$mem->set(‘hellokey‘, ‘Hello World‘, 0, 600) or die("Failed to save data at the memcached server");echo "Store data in the cache (data will expire in 600 seconds)<br/>\n";$get_result = $mem->get(‘hellokey‘);echo "$get_result is from memcached server.";         ?>

如果輸出“Hello World is from memcached.”表示成功,反之就不用說了吧!

七、libmemcached工具:

libMemcached則是基於C語言開發的開源的C/C++代碼訪問memcached的庫檔案,可以讓memcached和c/c++一起工作。同時它還提供了數個可以遠程使用的memcached管理工具。

安裝:

   1:  # tar xf libmemcached-1.0.2.tar.gz
   2:  # cd libmemcached-1.0.2
   3:  # ./configure
   4:  # make && make install
   5:  # ldconfig
管理工具:
   1:  # memcat --servers=127.0.0.1:11211 mykey
   2:  # memping
   3:  # memslap
   4:  # memstat

本文出自 “心靜自然通達” 部落格,請務必保留此出處http://bluezombie.blog.51cto.com/1444792/1441071

Memcached安裝方法

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.