[原創]Centos7 從零編譯配置Memcached


序言


 

Memcached 是一個高性能的分布式內存對象緩存系統,用於動態Web應用以減輕數據庫負載。它通過在內存中緩存數據和對象來減少讀取數據庫的次數,從而提高動態、數據庫驅動網站的速度。

Memcached基於一個存儲鍵/值對的hashmap。其守護進程(daemon )是用C寫的,但是客戶端可以用任何語言來編寫,並通過memcached協議與守護進程通信。

當然memcached分為服務端客戶端。服務端用來存放緩存,客戶端用來操作緩存。

客戶端有兩種常見的實現方式。

第一種是用php代碼根據服務端的通訊規則自己寫一個。

第二種是安裝php擴展庫(php-memcached)。

 

 

目錄


 

一、Centos7 從零編譯Nginx+PHP+MySql

二、Centos7 從零配置Nginx+PHP+MySql

三、Centos7 從零編譯配置Memcached

 

 

一、准備工作


 

創建目錄source和package,分別用來放源碼和編譯后的文件

# mkdir /source/
# mkdir /package/

 

 

二、memcached(服務端篇)


首先先安裝memcached依賴庫libevent。

 

2.1 安裝libevent

[官方網站] http://libevent.org/

命令流程:

# cd /source/
# wget https://github.com/libevent/libevent/releases/download/release-2.0.22-stable/libevent-2.0.22-stable.tar.gz
# tar -zxvf libevent-2.0.22-stable.tar.gz
# cd libevent-2.0.22-stable # .
/configure --prefix=/package/libevent # make # make install

 

2.2 安裝memcached

[官方網站] http://memcached.org/

命令流程:

# cd /source/
# wget http://memcached.org/files/memcached-1.4.25.tar.gz # tar -zxvf memcached-1.4.25.tar.gz # cd memcached-1.4.25 # ./configure --prefix=/lnmp/memcached --with-libevent=/package/libevent
# make
# make install

 

本章總結:

通過以上操作就很簡單的把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文件。

 

 

三、客戶端篇:php代碼


這種方法實現客戶端最簡單,直接下載我寫的《SL_Memcached》類庫include到自己的項目里調用相關對象就行了。

當然,你也可以用其他語言實現。這里就不在講了。

使用方法如下:

<?php
include('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

 

 

四、客戶端篇:php-memcached


4.1 安裝libmemcached

[官網] http://libmemcached.org/

命令流程:

# yum install libmemcached libmemcached-devel

 

4.2 安裝php-memcached

[官方網站] http://pecl.php.net/package/memcached

命令流程:

# cd /source/ # wget http://pecl.php.net/get/memcached-3.0.3.tgz
# tar -zxvf memcached-3.0.3.tgz
# cd memcached-3.0.3
# /lnmp/php/bin/phpize
# ./configure --with-php-config=/lnmp/php/bin/php-config
# make && make install

備注:

安裝成功后會有如下類似提示:

Installing shared extensions:     /lnmp/php/lib/php/extensions/no-debug-non-zts-20151012/

這說明在 /lnmp/php/lib/php/extensions/no-debug-non-zts-20151012/ 該目錄下會生成memcached.so

這個就是memcached.so所在目錄。我們先記住這個目錄。

 

開始配置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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM