Linux Memcached安裝以及PHP擴展安裝

一:安裝libeventphp

因爲memcached安裝時,須要使用libevent類庫,因此先安裝libevent數組

1.下載緩存

#wget   http://www.monkey.org/~provos/libevent-2.0.12-stable.tar.gz服務器

 

2.解壓縮多線程

#tar xzfv  libevent-2.0.12-stable.tar.gzmemcached

 

3.進入目錄測試

#cd libevent-2.0.12-stable大數據

 

4. 編譯,安裝
# ./configure
# make
# make install
 注:默認安裝到/usr/local/lib/目錄網站

二:安裝Memcachedgoogle

http://memcached.org/ 是Memcached的官方網站

1.下載

# wget http://memcached.googlecode.com/files/memcached-1.4.5.tar.gz

 

2.解壓縮

#tar xzfv  memcached-1.4.5.tar.gz 

 

3.進入目錄

#cd memcached-1.4.5 

 

4. 編譯,安裝
./configure --prefix=/local/memcached
make
make install



安裝完成後,會在 /local/memcached 出現 bin和share目錄
進行 bin目錄,啓動 memcache
方法以下: 
./memcached -d -u nobody -m 512 127.0.0.1 -p 11211
此時,會報一個異常
 error while loading shared libraries: libevent-2.0.so.5: cannot open shared object file: No such file or directory

#ln -s /usr/local/lib/libevent-2.0.so.5 /usr/lib64/libevent-2.0.so.5

如今能夠正常啓動memcached了
./memcached -d -u nobody -m 512 127.0.0.1 -p 11211

到這裏,看到memcached已經啓動,說明安裝成功。

三:安裝memcache PHP模塊

 

#wget http://pecl.php.net/get/memcache-2.2.4.tgz

# tar zxvf memcache-2.2.4.tgz
# cd memcache-2.2.4

找phpize

#whereis phpize

本機是/usr/bin/phpize

若是漲不到phpize,執行

#yum -y install php-devel          #phpize是php開發包的一部分

 

# /usr/bin/phpize

# ./configure --with-php-config=/usr/bin/php-config
# make
# make install

在php.ini文件添加一行

php.ini在/etc下
extension=memcache.so
重啓httpd
#service httpd restart
php裏使用phpinfo()看到以下信息說明memcached擴展才算安裝好!

四:PHP調用memcached
本身寫一個PHP程序測試一下
  1. <?php  
  2. $memcache = new Memcache; //建立一個memcache對象  
  3. $memcache->connect('localhost', 11211) or die ("Could not connect"); //鏈接Memcached服務器  
  4. $memcache->set('key', 'test'); //設置一個變量到內存中,名稱是key 值是test  
  5. $get_value = $memcache->get('key'); //從內存中取出key的值  
  6. echo $get_value;  
  7. ?>  
 
經常使用操做 
  1. <?php  
  2. //鏈接Memcache  
  3. $mem = new Memcache;  
  4. $mem->connect("localhost", 11211);  
  5. //保存數據  
  6. $mem->set('key1', 'This is first value', 0, 60);  
  7. $val = $mem->get('key1');  
  8. echo "Get key1 value: " . $val ."<br>";  
  9. //替換數據  
  10. $mem->replace('key1', 'This is replace value', 0, 60);  
  11. $val = $mem->get('key1');  
  12. echo "Get key1 value: " . $val . "<br>";  
  13. //保存數組數據  
  14. $arr = array('aaa', 'bbb', 'ccc', 'ddd');  
  15. $mem->set('key2', $arr, 0, 60);  
  16. $val2 = $mem->get('key2');  
  17. echo "Get key2 value: ";  
  18. print_r($val2);  
  19. echo "<br>";  
  20. //刪除數據  
  21. $mem->delete('key1');  
  22. $val = $mem->get('key1');  
  23. echo "Get key1 value: " . $val . "<br>";  
  24. //清除全部數據  
  25. $mem->flush();  
  26. $val2 = $mem->get('key2');  
  27. echo "Get key2 value: ";  
  28. print_r($val2);  
  29. echo "<br>";  
  30. //關閉鏈接  
  31. $mem->close();  
  32. ?>  

在一臺或者多臺機器啓用一個或者多個進程,這裏是在一臺機器啓 
用兩個進程,使用兩個端口: 
#./memcached -d -u nobody -m 512 127.0.0.1 -p 11211 
#./memcached -d -u nobody -m 512 127.0.0.1 -p 11212 
  1. <?php  
  2. //鏈接Memcache  
  3. $mem = new Memcache;  
  4. $mem->addServer("localhost", 11211);  
  5. $mem->addServer("localhost", 11212);  
  6. //保存數據  
  7. $mem->set('key1', 'This is first value', 0, 60);  
  8. $val = $mem->get('key1');  
  9. echo "Get key1 value: " . $val ."<br>";  
  10. //保存數組數據  
  11. $arr = array('aaa', 'bbb', 'ccc', 'ddd');  
  12. $mem->set('key2', $arr, 0, 60);  
  13. $val2 = $mem->get('key2');  
  14. echo "Get key2 value: ";  
  15. print_r($val2);  
  16. echo "<br>";  
  17. //刪除數據  
  18. $mem->delete('key1');  
  19. $val = $mem->get('key1');  
  20. echo "Get key1 value: " . $val . "<br>";  
  21. //關閉鏈接  
  22. $mem->close();  
  23. ?>  

五:Memcached一些特性和限制
• 在 Memcached 中能夠保存的item數據量是沒有限制的,只有內存足夠 
• Memcached單進程最大使用內存爲2G,要使用更多內存,能夠分多個端口開啓多個Memcached進程 
• 最大30天的數據過時時間, 設置爲永久的也會在這個時間過時,常量REALTIME_MAXDELTA 
60*60*24*30 控制 
• 最大鍵長爲250字節,大於該長度沒法存儲,常量KEY_MAX_LENGTH 250 控制 
• 單個item最大數據是1MB,超過1MB數據不予存儲,常量POWER_BLOCK 1048576 進行控制, 
它是默認的slab大小 
• 最大同時鏈接數是200,經過 conn_init()中的freetotal 進行控制,最大軟鏈接數是1024,經過 
settings.maxconns=1024 進行控制 
• 跟空間佔用相關的參數:settings.factor=1.25, settings.chunk_size=48, 影響slab的數據佔用和步進方式
 
查看Memcached內部工做狀態 
訪問Memcached:telnet 主機名 端口號 
查看總狀態:stats 
查看某項狀態:stats curr_connections 
禁止LRU 
有些狀況下LRU機制反倒會形成麻煩。memcached啓動時經過「-M」參數能夠禁止LRU, 
以下所示: 
$ memcached -M -m 1024 
啓動時必須注意的是,小寫的「-m」選項是用來指定最大內存大小的。不指定具體數值則 
使用默認值64MB。 
指定「-M」參數啓動後,內存用盡時memcached會返回錯誤。話說回來,memcached畢 
竟不是存儲器,而是緩存,因此推薦使用LRU。
 
Memcached使用線程模式工做  在安裝的時候必須打開:./configure --enable-threads  安裝完以後,啓動的時候看看幫助信息有沒有這條:  -t <num> number of threads to use, default 4  若是存在該選項,說明已經支持了線程,就能夠在啓動的時候使用 -t 選項來啓動多線程  而後啓動的時候必須加上你須要支持的線程數量:  /usr/local/memcache/bin/memcached -t 1024
相關文章
相關標籤/搜索