標籤:
序言
Memcached 是一個高效能的分布式記憶體對象緩衝系統,用於動態Web應用以減輕資料庫負載。它通過在記憶體中快取資料和對象來減少讀取資料庫的次數,從而提高動態、資料庫驅動網站的速度。
Memcached基於一個儲存鍵/值對的hashmap。其守護進程(daemon )是用C寫的,但是用戶端可以用任何語言來編寫,並通過memcached協議與守護進程通訊。
當然memcached分為服務端和用戶端。服務端用來存放緩衝,用戶端用來操作緩衝。
用戶端有兩種常見的實現方式。
第一種是用php代碼根據服務端的通訊規則自己寫一個。
第二種是安裝php擴充庫(php-memcached)。
目錄
一、Centos7 從零編譯配置Memcached
一、準備工作
建立目錄source和package,分別用來放源碼和編譯後的檔案
# mkdir /source/# mkdir /package/
二、開始安裝
2.1 安裝Redis
[官方網站] http://www.redis.io/
命令流程:
# cd /source/# wget http://download.redis.io/releases/redis-3.2.0.tar.gz# tar -zxvf redis-3.2.0.tar.gz
# cd redis-3.2.0# make# cd src
2.2 組合產生的檔案
編譯完成後,在src目錄下,有四個可執行檔redis-server、redis-benchmark、redis-cli和redis.conf。然後拷貝到一個目錄下。
命令流程:
mkdir /package/redis
cp redis-server /package/rediscp redis-benchmark /package/rediscp redis-cli /package/rediscp redis.conf /package/rediscd /package/redis
本章總結:
通過以上操作就很簡單的把memcached服務端編譯好了。這時候就可以開啟服務端進行工作了。
# /lnmp/memcached/bin/memcached -d -m 2048 -l 127.0.0.1 -p 11211 -u root -c 1024 –P /tmp/memcached.pid
啟動參數說明:-d 選項是啟動一個守護進程。-m 分配給Memcache使用的記憶體數量,單位是MB,預設64MB。-l 監聽的IP地址。(預設:INADDR_ANY,所有地址)-p 設定Memcache的TCP監聽的連接埠,最好是1024以上的連接埠。-u 運行Memcache的使用者,如果當前為root的話,需要使用此參數指定使用者。-c 選項是最大啟動並執行並發串連數,預設是1024。-P 設定儲存Memcache的pid檔案。
三、memcached(用戶端篇)
第一種:php代碼
這種方法實現用戶端最簡單,直接下載我寫的《SL_Memcached》類庫include到自己的項目裡調用相關對象就行了。
當然,你也可以用其他語言實現。這裡就不在講了。
使用方法如下:
<?phpinclude(‘memcached.class.php‘);$memcached = new SL_Memcached(); //執行個體化對象$memcached->connect(‘127.0.0.1:11211‘); //串連memcached服務端$memcached->set(‘key1‘, ‘我是快樂的索引值‘); //設定索引值$memcached->set(‘key2‘, ‘我就要被刪了‘); //設定索引值$memcached->delete(‘key2‘); //刪除索引值var_dump($memcached->get(‘key1‘)); //擷取索引值var_dump($memcached->get(‘key2‘)); //擷取索引值?>
輸出:
string(21) "我是快樂的索引值"
NULL
4.1 安裝zlib
[官方網站] http://zlib.net/
命令流程:
# cd /source/
# wget http://zlib.net/zlib-1.2.8.tar.gz# tar -zxvf zlib-1.2.8.tar.gz
# ./configure --prefix=/package/zlib
# make
# make install
開始配置php-memcached
開啟php.ini
# vi /lnmp/php/etc/php.ini
在合適的位置添加如下
extension = /lnmp/php/lib/php/extensions/no-debug-non-zts-20151012/memcached.so
------------------------------------------------------------
五、常見錯誤總匯
------------------------------------------------------------
5.1 Unable to load dynamic library ‘memcached.so‘ - libmemcached.so.11: cannot open shared object file: No such file or directory in Unknown no line 0
說明:沒有找到php的附加庫memcached.so所需動態庫libmemcached.so.11。出現上述錯誤一般是沒有將libmemcached目錄設定到環境變數裡。
我們添加到環境變數LD_LIBRARY_PATH裡就搞定了。
# export LD_LIBRARY_PATH=/package/libmemcached/lib:$LD_LIBRARY_PATH
[原創]Centos7 從零編譯配置Redis