linux下安裝memcache

memcache一點點積累

什麼是memcache 爲什麼要用:

Memcache是一個高性能的分佈式的內存對象緩存系統,通過在內存裏維護一個統一的巨大的hash表,它能夠用來存儲各種格式的數據,包括圖像視頻文件以及數據庫檢索的結果等。Memcachedanga的一個項目,最早是LiveJournal 服務的,最初爲了加速 LiveJournal 訪問速度而開發的,後來被很多大型的網站採用。

Memcache安裝的過程

服務器端主要是安裝memcache服務器端,目前的最新版本是 memcached-1.3.0
下載:http://www.danga.com/memcached/dist/memcached-1.2.2.tar.gz
另外,Memcache用到了libevent這個庫用於Socket的處理,所以還需要安裝libeventlibevent的最新版本是libevent-1.3。(如果你的系統已經安裝了libevent,可以不用安裝)

官網:http://www.monkey.org/~provos/libevent/
下載:http://www.monkey.org/~provos/libevent-1.3.tar.gz

wget指令直接下載這兩個東西.下載回源文件後。
1.
先安裝libevent。這個東西在配置時需要指定一個安裝路徑,即./configure –prefix=/usr;然後make;然後make install
2.
再安裝memcached,只是需要在配置時需要指定libevent的安裝路徑即./configure –with-libevent=/usr;然後make;然後make install
這樣就完成了LinuxMemcache服務器端的安裝。詳細的方法如下:

1.分別把memcachedlibevent下載回來,放到 /tmp 目錄下:
# cd /tmp
# wget http://www.danga.com/memcached/dist/memcached-1.2.0.tar.gz
# wget http://www.monkey.org/~provos/libevent-1.2.tar.gz

2.先安裝libevent
# tar zxvf libevent-1.2.tar.gz
# cd libevent-1.2
# ./configure –prefix=/usr
# make
# make install

3.測試libevent是否安裝成功:
# ls -al /usr/lib | grep libevent
lrwxrwxrwx 1 root root 21 11?? 12 17:38 libevent-1.2.so.1 -> libevent-1.2.so.1.0.3
-rwxr-xr-x 1 root root 263546 11?? 12 17:38 libevent-1.2.so.1.0.3
-rw-r–r– 1 root root 454156 11?? 12 17:38 libevent.a
-rwxr-xr-x 1 root root 811 11?? 12 17:38 libevent.la
lrwxrwxrwx 1 root root 21 11?? 12 17:38 libevent.so -> libevent-1.2.so.1.0.3
還不錯,都安裝上了。

4.安裝memcached,同時需要安裝中指定libevent的安裝位置:
# cd /tmp
# tar zxvf memcached-1.2.0.tar.gz
# cd memcached-1.2.0
# ./configure –with-libevent=/usr
# make
# make install
如果中間出現報錯,請仔細檢查錯誤信息,按照錯誤信息來配置或者增加相應的庫或者路徑。
安裝完成後會把memcached放到 /usr/local/bin/memcached

5.測試是否成功安裝memcached
# ls -al /usr/local/bin/mem*
-rwxr-xr-x 1 root root 137986 11?? 12 17:39 /usr/local/bin/memcached
-rwxr-xr-x 1 root root 140179 11?? 12 17:39 /usr/local/bin/memcached-debug

安裝MemcachePHP擴展
1.
http://pecl.php.net/package/memcache 選擇相應想要下載的memcache版本。
2.
安裝PHPmemcache擴展

tar vxzf memcache-2.2.1.tgz
cd memcache-2.2.1
/usr/local/php/bin/phpize
./configure --enable-memcache --with-php-config=/usr/local/php/bin/php-config --with-zlib-dir

 make install

3.上述安裝完後會有類似這樣的提示:

Installing shared extensions: /usr/local/php/lib/php/extensions/no-debug-non-zts-2007xxxx/

4.php.ini中的extension_dir = “./”修改爲

extension_dir = “/usr/local/php/lib/php/extensions/no-debug-non-zts-2007xxxx/”

5.添加一行來載入memcache擴展:extension=memcache.so

memcached的基本設置
1.
啓動Memcache的服務器端:
# /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
是設置保存Memcachepid文件,我這裏是保存在 /tmp/memcached.pid

2.如果要結束Memcache進程,執行:

# kill `cat /tmp/memcached.pid`

也可以啓動多個守護進程,不過端口不能重複。

3.重啓apacheservice httpd restart

Memcache環境測試
運行下面的php文件,如果有輸出This is a test!,就表示環境搭建成功。開始領略Memcache的魅力把!
< ?php
$mem = new Memcache;
$mem->connect(”127.0.0.1″, 11211);
$mem->set(’key’, ‘This is a test!’, 0, 60);
$val = $mem->get(’key’);
echo $val;
?>

//如何檢查memcached是否還在運行
 ps -ef | grep memcached

如何開機自啓動

 vi /etc/rc.local

如何查看有多少個客戶端在連接

netstat -an | grep 11211 | wc -l

memcache已經啓動了,但是php還是無法連接memcache服務器?

system-config-securitylevel-tui

SELinux的選項disabled掉,保存退出,再看看應該可以連上了。

DEBUG

LD_DEBUG=libs /usr/local/bin/memcached -v
memcache
方法的一些說明

Memcache::add — 添加一個值,如果已經存在,則返回false Memcache::set方法類似.區別是如果 Memcache::add方法的返回值爲false,表示這個key已經存在,而Memcache::set方法則會直接覆寫。
Memcache::addServer —
添加一個可供使用的服務器地址.8個參數,除了第一個參數意外,其他都是可選的,第一個參數表示服務器的地址,第二個參數表示端口,第三個參數表示是否是一個持久連接,第四個參數表示這臺服務器在所有服務器中所佔的權重,第五個參數表示連接的持續時間,第六個參數表示連接重試的間隔時間,默認爲15,設置爲-1表示不進行重試,第七個參數用來控制服務器的在線狀態,第8個參數允許設置一個回掉函數來處理錯誤信息。
Memcache::close —
關閉一個Memcache對象
Memcache::connect —
創建一個Memcache對象
memcache_debug —
控制調試功能 前提是php在編譯的時候使用了–enable-debug選項,否則這個函數不會有作用。
Memcache::decrement —
對保存的某個key中的值進行減法操作
Memcache::delete —
刪除一個key.第一個參數表示key ,第二個參數可選,表示刪除延遲的時間。
Memcache::flush —
清除所有緩存的數據
Memcache::get —
獲取一個key值 有一個參數 表示key
Memcache::getExtendedStats —
獲取進程池中所有進程的運行系統統計

Memcache::getServerStatus —
獲取運行服務器的參數
Memcache::getStats —
返回服務器的一些運行統計信息 有三個參數,第一個參數表示要求返回的類型:reset, malloc, maps, cachedump, slabs, items, sizes;第二個參數和第三個參數是在第一個參數設置爲“cachedump”時使用的。
Memcache::getExtendedStats
方法的作用是獲取進程池中所有進程的運行系統統計。
Memcache::getVersion —
返回運行的Memcache的版本信息
Memcache::increment —
對保存的某個key中的值進行加法操作
Memcache::pconnect —
創建一個Memcache的持久連接對象
Memcache::replace — R
對一個已有的key進行覆寫操作 有四個參數,作用和方法的相同。
Memcache::set —
添加一個值,如果已經存在,則覆寫
Memcache::setCompressThreshold —
對大於某一大小的數據進行壓縮
Memcache::setServerParams —
在運行時修改服務器的參數

呵呵以上就這麼多了,注意不要用php腳本執行,apache加載執行.我用的是nginx.

實在不行可以參考這個文獻,個人感覺不錯http://www.indang.net/html/php-memcache-finishing.html

發佈了140 篇原創文章 · 獲贊 8 · 訪問量 28萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章