Memcached安裝以及PHP的調用

來源:互聯網
上載者:User

一:安裝libevent

由於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.gz

 

3.進入目錄

#cd libevent-2.0.12-stable

 

4. 編譯,安裝
# ./configure
# make
# make install
 註:預設安裝到/usr/local/lib/目錄

二:安裝Memcached

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

原因是找不到libevent-2.0.so.5類庫,解決辦法如下:

使用LD_DEBUG=help ./memcached -v來確定 載入的類庫路徑,方法如下:
LD_DEBUG=libs ./memcached -v 2>&1 > /dev/null | less

出現(END)可以直接輸入p退出

#ln -s /usr/local/lib/libevent-2.0.so.5 /lib/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

# /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程式測試一下
<?php$memcache = new Memcache; //建立一個memcache對象$memcache->connect('localhost', 11211) or die ("Could not connect"); //串連Memcached伺服器$memcache->set('key', 'test'); //設定一個變數到記憶體中,名稱是key 值是test$get_value = $memcache->get('key'); //從記憶體中取出key的值echo $get_value;?>
 常用操作
<?php//串連Memcache$mem = new Memcache;$mem->connect("localhost", 11211);//儲存資料$mem->set('key1', 'This is first value', 0, 60);$val = $mem->get('key1');echo "Get key1 value: " . $val ."<br>";//替換資料$mem->replace('key1', 'This is replace value', 0, 60);$val = $mem->get('key1');echo "Get key1 value: " . $val . "<br>";//儲存數組資料$arr = array('aaa', 'bbb', 'ccc', 'ddd');$mem->set('key2', $arr, 0, 60);$val2 = $mem->get('key2');echo "Get key2 value: ";print_r($val2);echo "<br>";//刪除資料$mem->delete('key1');$val = $mem->get('key1');echo "Get key1 value: " . $val . "<br>";//清除所有資料$mem->flush();$val2 = $mem->get('key2');echo "Get key2 value: ";print_r($val2);echo "<br>";//關閉串連$mem->close();?>
在一台或者多台機器啟用一個或者多個進程,這裡是在一台機器啟
用兩個進程,使用兩個連接埠:
#./memcached -d -u nobody -m 512 127.0.0.1 -p 11211
#./memcached -d -u nobody -m 512 127.0.0.1 -p 11212
<?php//串連Memcache$mem = new Memcache;$mem->addServer("localhost", 11211);$mem->addServer("localhost", 11212);//儲存資料$mem->set('key1', 'This is first value', 0, 60);$val = $mem->get('key1');echo "Get key1 value: " . $val ."<br>";//儲存數組資料$arr = array('aaa', 'bbb', 'ccc', 'ddd');$mem->set('key2', $arr, 0, 60);$val2 = $mem->get('key2');echo "Get key2 value: ";print_r($val2);echo "<br>";//刪除資料$mem->delete('key1');$val = $mem->get('key1');echo "Get key1 value: " . $val . "<br>";//關閉串連$mem->close();?>
五: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/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

網上流行的PHP安裝Memcached第二種方法安裝和配置

需要把對應版本改為最新即可

1、安裝Memcached

# tar vxzf memcached-1.1.12.tar.gz
# cd memcached-1.1.12
# ./configure --prefix=/usr/local/memcached
# make
# make install

安裝完之後要啟動服務

# cd /usr/local/memcached/bin
# ./memcached -d -m 50 -p 11211 -u root

參數說明 -m 指定使用多少兆的緩衝空間;-p 指定要監聽的連接埠; -u 指定以哪個使用者來運行

2、安裝memcache PHP模組

# tar vxzf memcache-1.5.tgz
# cd memcache-1.5
# /usr/local/php/bin/phpize
//注意下面不一樣
# ./configure --enable-memcache --with-php-config=/usr/local/php/bin/php-config --with-zlib-dir
# make
# make install

安裝完後會有類似這樣的提示:

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

把這個記住,然後修改php.ini,把

extension_dir = "./"

修改為

extension_dir = "/usr/local/php/lib/php/extensions/no-debug-non-zts-20050922/"

並添加一行

extension=memcache.so

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.