Memcache用到了libevent這個庫用於Socket的處理,所以還需要安裝libevent,libevent的最新版本是libevent-1.3。(如果你的系統已經安裝了libevent,可以不用安裝)
用wget指令直接下載這兩個東西.下載回源檔案後。
1.先安裝libevent。這個東西在配置時需要指定一個安裝路徑,即./configure –prefix=/usr;然後make;然後make install;
2.再安裝memcached,只是需要在配置時需要指定libevent的安裝路徑即./configure –with-libevent=/usr;然後make;然後make install;
這樣就完成了Linux下Memcache伺服器端的安裝。詳細的方法如下:
1.分別把memcached和libevent下載回來,放到 /tmp 目錄下:
Java代碼
- # cd /tmp
- # wget http://www.danga.com/memcached/dist/memcached-1.4.12.tar.gz
- # wget http://www.monkey.org/~provos/libevent-1.4.12-stable.tar.gz
2.先安裝libevent:
Java代碼
- # tar zxvf libevent-1.4.12-stable.tar.gz
- # cd libevent-1.4.12
- # ./configure --prefix=/usr
- # make
- # make install 4.安裝memcached,同時需要安裝中指定libevent的安裝位置: Java代碼
- # cd /tmp
- # tar zxvf memcached-1.4.4.tar.gz
- # cd memcached-1.4.4
- # ./configure –with-libevent=/usr 或./configure --prefix=/usr/local/memcached
- # make
- # make install
如果中間出現報錯,請仔細檢查錯誤資訊,按照錯誤資訊來配置或者增加相應的庫或者路徑。
安裝完成後會把memcached放到 /usr/local/bin/memcached ,memcached的基本設定:
1.啟動Memcache的伺服器端: 建立一個start_memcache.sh 指令碼,內容如下
- # /usr/local/bin/memcached -d -m 10 -u root -l 192.168.0.200 -p 12000 -c 256 -P /tmp/memcached.pid
# /usr/local/bin/memcached -d -m 10 -u root -l 192.168.0.200 -p 12000 -c 256 -P /tmp/memcached.pid
-d選項是啟動一個守護進程,
-m是分配給Memcache使用的記憶體數量,單位是MB,我這裡是10MB,
-u是運行Memcache的使用者,我這裡是root,
-l是監聽的伺服器IP地址,如果有多個地址的話,我這裡指定了伺服器的IP地址192.168.0.200,
-p是設定Memcache監聽的連接埠,我這裡設定了12000,最好是1024以上的連接埠,
-c選項是最大啟動並執行並發串連數,預設是1024,我這裡設定了256,按照你伺服器的負載量來設定,
-P是設定儲存Memcache的pid檔案,我這裡是儲存在 /tmp/memcached.pid,
2.如果要結束Memcache進程,執行:
Java代碼
- # kill `cat /tmp/memcached.pid`
# kill `cat /tmp/memcached.pid`
也可以啟動多個守護進程,不過連接埠不能重複。
或
安裝完後啟動memcached並分配32m記憶體(32為使用記憶體數,可按自身情況修改)
/usr/local/memcached/bin/memcached -d -m 32 -l 127.0.0.1 -p 11211 -u root
將memcached加入啟動項
# vi /etc/rc.d/rc.local
按鍵盤上的 i 開始編輯
在最後加入
/usr/local/memcached/bin/memcached -d -m 32 -l 127.0.0.1 -p 11211 -u root
按Esc鍵,再輸入
:wq
儲存退出
如果需要,可以reboot一下,不過不用reboot應該已經生效~
如果要清空memcache的items,常用的辦法是什嗎?殺掉重啟?如果有n台memcache需要重啟怎麼辦?挨個做一遍?
很簡單,假設memcached運行在本地的11211連接埠,那麼跑一下命令列:
$ echo ”flush_all” | nc localhost 11211
註:flush並不會將items刪除,只是將所有的items標記為expired。