您好,登錄后才能下訂單哦!
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 variables PORT="11211"USER="nobody"MAXCONN="1024"CACHESIZE="64"
RETVAL=0 prog="/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=1 esac exit $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
 
 
PS:我看到過有的介紹說是“Memcached單進程最大使用內存為2G,如果想用更多內存,可以用用其他端口再開啟”我沒測試過,寫出來當個備忘。
上面很多內容都引用了了mixi.jp 公司編寫的《Memcached全面剖析》,大家對memcached感興趣請到通過下面鏈接查閱,講解的非常清晰。
http://blog.charlee.li/memcached-pdf/
 
五、為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
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。