1.MemCached是什麼?
MemCached是一個開源的高性能的分佈式內存對象緩存系統,在Web應用中用於減輕數據庫負載。我們可以將使用頻率較高,且要求時效性不嚴格的數據緩存到MemCached中,以減少讀取數據庫的次數,從而減低數據庫壓力。
2.MemCached在網站架構中的位置?
3.MemCached特點:
MemCached作爲高速運行的分佈式緩存服務器,具有以下的特點。
· 協議簡單
· 基於libevent的事件處理
· 內置內存存儲方式
· MemCached不互相通信的分佈式
4.MemCached的運行圖:
5.MemCached的數據過期方式:
6.MemCached的安裝:
在windows下的安裝:
下載Windows平臺下的MemCached,地址爲:http://code.jellycan.com/files/memcached-1.2.6-win32-bin.zip
對應的源代碼地址爲:http://code.jellycan.com/files/memcached-1.2.6-win32-src.zip
然後,解壓開來,會看到一個memcached.exe文件,進行如下圖的安裝,將以系統服務的形式安裝到機上
然後查看系統服務,會發現已經可以看到memcached服務了
然後,選中此服務點鼠標右鍵,啓動此服務。
在DOS界面中輸入:telnet
127.0.0.1 11211來確認服務是否啓動無誤,如果無誤,則會顯示如下窗口:
上面圖中顯示的ERROR是我隨便輸入字符後按回車顯示的,這是因爲你需要安裝memcached規定的協議來進行輸入,否則就顯示如上所示錯誤。
在linux下的安裝:
安裝libevent庫
- cd /usr/local/src
- wget http://monkey.org/~provos/libevent-1.3b.tar.gz
- tar zxvf libevent-1.3b.tar.gz
- cd libevent-1.3b
- ./configure
- make && make install
安裝memcache
- cd /usr/local/src
- wget http://danga.com/memcached/dist/memcached-1.2.5.tar.gz
- tar zxvf memcached-1.2.5.tar.gz
- cd memcached-1.2.5
- ./configure
- make && make install
啓動
- cd usr/local/bin
- bin] # memcached –h
- 出錯
- memcached: error while loading shared libraries: libevent-1.3b.so.1: cannot open shared object file: No such file or directory
則運行 LD_DUBUG=libs 就可以知道memcached啓動時庫的加載路徑。具體如下
- [root@bogon usr/local/bin]# LD_DEBUG=libs memcached –v
- 5112: find library=libevent-1.3b.so.1 [0]; searching
- 5112: search cache=/etc/ld.so.cache
- 5112: search path=/lib/tls/i686/sse2:/lib/tls/i686:/lib/tls/sse2:/lib/tls:/lib/i686/sse2:/lib/i686:/lib/sse2:/lib:/usr/lib/tls/i686/sse2:/usr/lib/tls/i686:/usr/lib/tls/sse2:/usr/lib/tls:/usr/lib/i686/sse2:/usr/lib/i686:/usr/lib/sse2:/usr/lib (system search path)
- 5112: trying file=/lib/tls/i686/sse2/libevent-1.3b.so.1
- 5112: trying file=/lib/tls/i686/libevent-1.3b.so.1
- 5112: trying file=/lib/tls/sse2/libevent-1.3b.so.1
- 5112: trying file=/lib/tls/libevent-1.3b.so.1
- 5112: trying file=/lib/i686/sse2/libevent-1.3b.so.1
- 5112: trying file=/lib/i686/libevent-1.3b.so.1
- 5112: trying file=/lib/sse2/libevent-1.3b.so.1
- 5112: trying file=/lib/libevent-1.3b.so.1
- 5112: trying file=/usr/lib/tls/i686/sse2/libevent-1.3b.so.1
- 5112: trying file=/usr/lib/tls/i686/libevent-1.3b.so.1
- 5112: trying file=/usr/lib/tls/sse2/libevent-1.3b.so.1
- 5112: trying file=/usr/lib/tls/libevent-1.3b.so.1
- 5112: trying file=/usr/lib/i686/sse2/libevent-1.3b.so.1
- 5112: trying file=/usr/lib/i686/libevent-1.3b.so.1
- 5112: trying file=/usr/lib/sse2/libevent-1.3b.so.1
- 5112: trying file=/usr/lib/libevent-1.3b.so.1
然後給libevent-1.3b.so.1建立一個鏈接:
- [root@bogon ~]# sudo ln -s /usr/local/lib/libevent-1.3b.so.1 /lib/libevent-1.3b.so.1
檢查是否建立成功
- [root@bogon ~]# ls -al /lib|grep libevent
- lrwxrwxrwx 1 root root 33 Aug 25 19:52 libevent-1.3b.so.1 -> /usr/local/lib/libevent-1.3b.so.1
此時在
- bin] # memcached –h
- memcached 1.2.5
- -p <num> TCP port number to listen on (default: 11211)
- -U <num> UDP port number to listen on (default: 0, off)
- -s <file> unix socket path to listen on (disables network support)
- -a <mask> access mask for unix socket, in octal (default 0700)
- -l <ip_addr> interface to listen on, default is INDRR_ANY
- -d run as a daemon
- -r maximize core file limit
- -u <username> assume identity of <username> (only when run as root)
- -m <num> max memory to use for items in megabytes, default is 64 MB
- -M return error on memory exhausted (rather than removing items)
- -c <num> max simultaneous connections, default is 1024
- -k lock down all paged memory. Note that there is a
- limit on how much memory you may lock. Trying to
- allocate more than that would fail, so be sure you
- set the limit correctly for the user you started
- the daemon with (not for -u <username> user;
- under sh this is done with 'ulimit -S -l NUM_KB').
- -v verbose (print errors/warnings while in event loop)
- -vv very verbose (also print client commands/reponses)
- -h print this help and exit
- -i print memcached and libevent license
- -b run a managed instanced (mnemonic: buckets)
- -P <file> save PID in <file>, only used with -d option
- -f <factor> chunk size growth factor, default 1.25
- -n <bytes> minimum space allocated for key+value+flags, default 48
默認情況下memcached安裝到/usr/local/bin下。
啓動:
- [root@bogon bin]# memcached -d -m 128 -u root -p 11211
檢查是否已經啓動
- [root@bogon bin]# telnet 127.0.0.1 11211
- Trying 127.0.0.1...
- Connected to localhost.localdomain (127.0.0.1).
- Escape character is '^]'.
選項說明
p 使用的TCP端口。默認爲11211
m 最大內存大小。默認爲64M
vv 用very vrebose模式啓動,調試信息和錯誤輸出到控制檯
d 作爲daemon在後臺啓動
查看MemCached的內部狀態
- [root@bogon bin]# cd /usr/local/bin
- [root@bogon bin]# telnet 127.0.0.1 11211
- Trying 127.0.0.1...
- Connected to localhost.localdomain (127.0.0.1).
- Escape character is '^]'.
- stats
- STAT pid 6779
- STAT uptime 14217
- STAT time 1314343512
- STAT version 1.2.5
- STAT pointer_size 32
- STAT rusage_user 0.002999
- STAT rusage_system 0.027995
- STAT curr_items 0
- STAT total_items 0
- STAT bytes 0
- STAT curr_connections 3
- STAT total_connections 4
- STAT connection_structures 4
- STAT cmd_get 0
- STAT cmd_set 0
- STAT get_hits 0
- STAT get_misses 0
- STAT evictions 0
- STAT bytes_read 56
- STAT bytes_written 482
- STAT limit_maxbytes 134217728
- STAT threads 1
- END
- Quit