歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> Ubuntu 10.10下編譯安裝Memcached 1.4.5

Ubuntu 10.10下編譯安裝Memcached 1.4.5

日期:2017/2/28 16:07:18   编辑:Linux教程

一、簡介

Memcached是國外社區網站 LiveJournal 的開發團隊開發的高性能的分布式內存緩存服務器。一般的使用目的是,通過緩存數據庫查詢結果,減少數據庫訪問次數,以提高動態Web應用的速度、提高可擴展性。

官方網站:http://www.danga.com/memcached/

二、原理

libevent是一套跨平台的事件處理接口的封裝,能夠兼容包括這些操作系統:Windows/Linux/BSD/Solaris 等操作系統的的事件處理。Memcached 使用libevent來進行網絡並發連接的處理,能夠保持在很大並發情況下,仍舊能夠保持快速的響應能力。

1、數據存儲方式:Slab Allocation

Slab Allocator的基本原理是按照預先規定的大小,將分配的內存分割成特定長度的塊,以完全解決內存碎片問題。

Slab Allocation的原理相當簡單。將分配的內存分割成各種尺寸的塊(chunk),並把尺寸相同的塊分成組(chunk的集合)

缺點:由於分配的是特定長度的內存,因此無法有效利用分配的內存。

2、數據過期方式:Lazy Expiration

memcached內部不會監視記錄是否過期,而是在get時查看記錄的時間戳,檢查記錄是否過期。

LRU——Least Recently Used,當memcached的內存空間不足時(無法從slab class 獲取到新的空間時),就從最近未被使用的記錄中搜索,並將其空間分配給新的記錄。

三、安裝

Memcache包括服務器和客戶端的安裝。可以在各種linux平台上安裝,也可以在windows上安裝。

服務器端

libevent
官網:http://monkey.org/~provos/libevent/
下載:http://monkey.org/~provos/libevent-1.4.9-stable.tar.gz
Memcached
官網:http://www.danga.com/memcached
下載:http://www.danga.com/memcached/dist/

libevent安裝

>tar -zxvf libevent-1.4.9-stable.tar.gz
>cd libevent-1.4.9-stable
>./configure //默認裝到/usr/lib/下
>make
>make install

但是默認情況下,libevent是安裝到了/usr/local/lib目錄下,而memcached找ibevent-2.0.so.5模塊的路徑

卻是/usr/lib目錄,可想而知,肯定找不到的啊,因此需要你軟鏈接過去,或者你指定安裝目錄也行。

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

好了,到此為止,才算只真正的安裝好了libevent.


Memcached安裝

>tar -zxvf memcached-1.4.1.tar.gz
>cd memcached-1.4.1
>./configure --prefix=/usr/local/memcached
>make
>make install
Memcached啟動

>./memcached -d -m 10 -u root -l 10.20.20.194 -p 11210 -c 256 -P /tmp/memcached.pid

參數解釋:
-d 以守護程序(daemon)方式運行 memcached。

-u 指定用戶,如果當前為 root 的話,需要使用此參數指定用戶。
-m 設置 memcached 可以使用的內存大小,單位為Mb,缺省是 64 MB;
-l 設置監聽的 IP 地址,如果是本機的話,通常可以不設置此參數;
-p 設置監聽的端口,默認為 11211,所以也可以不設置此參數;(此處不設置,測試後發現無法連接)

-c 設置最大運行的並發連接數,默認是1024

-P 設置保存Memcache的pid文件

Memcached停止

>kill `cat /tmp/memcached.pid`

備注:

cat /tmp/memcached.pid——查看memcached的進程號

查看Memcached幫助信息

>./memcached -h

檢查Memcached是否運行正常

>ps auxxww | grep memcached

客戶端

a、linux安裝

Memcached有兩種安裝方式:一種是直接安裝memcache;一種是安裝memcached。

(1)、安裝memcache

PHP Memcache擴展

官網:http://pecl.php.net/package/memcache
下載:http://pecl.php.net/get/memcache-3.0.4.tgz

安裝

>tar -zxvf memcache-3.0.4.tgz
>cd memcache-3.0.4
>/usr/local/php/bin/phpize
>./configure --with-php-config=/usr/local/php/bin/php-config
>make
>make install

配置

在php.ini中新增配置內容:
extension_dir = "/usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/"
extension = memcache.so

(2)、安裝memcached

Memcached客戶端是基於libmemcached的,所以需先安裝libmemcached。

libmemcached

官網:http://download.tangent.org

下載:http://download.tangent.org/libmemcached-0.33.tar.gz

安裝

>tar -zxvf libmemcached-0.33.tar.gz
>cd libmemcached-0.33
>./configure --prefix=/usr/local/libmemcached/ --with-libmemcached-dir=/usr/local/libmemcached/ --此處--with-libmemcached-dir需驗證

>make
>make install

PHP Memcached擴展

官網:http://pecl.php.net/package/memcached
下載:http://pecl.php.net/get/memcached-1.0.0.tgz

安裝

>tar -zxvf memcached-1.0.0.tgz
>cd memcached-1.0.0
>./configure --with-php-config=/usr/local/php/bin/php-config --with-libmemcached-dir=/usr/local/libmemcached/
>make
>make install
配置

在php.ini中新增配置內容:
extension_dir = "/usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/"
extension = memcache.so

b、Windows安裝

1、下載php_memcache.dll

2、將php_memcache.dll拷貝到php/ext/目錄下

3、修改php.ini,加入extension=php_memcache.dll

4、重啟服務器
5、檢查phpinfo(),會發現memcache的部分

四、安裝常見問題及解決

1、現象:./memcached -h出現如下提示
checking for libevent directory... configure: error: libevent is required. You can get it from http://www.monkey.org/~provos/libevent/
解決:在當前目錄下,執行
>whereis libevent
>LD_DEBUG=libs ./memcached -v 2>&1 > /dev/null | less
>ln -s /usr/src/libevent-1.4.9-stable/lib/libevent-1.4.so.2 /lib/

2、現象:運行程序時,頁面提示:Warning: Memcache::connect() [memcache.connect]: Can't connect to 10.20.20.194:11211, 由於連接方在一段時間後沒有正確答復或連接的主機沒有反應,連接嘗試失敗。 (10060) in E:\AppServ\www\test\memcache\test1.php on line 4
解決:設定端口,啟動改為-p 11210
>./memcached -d -m 10 -u root -l 10.20.20.194 -p 11210 -c 256 -P /tmp/memcached.pid

3、現象:運行時提示:checking for libmemcached location... configure: error: memcached support requires libmemcached. Use --with-libmemcached-dir=<DIR> to specify the prefix where libmemcached headers and library are located

解決:在當前目錄下,執行whereis libmemcached找到libmemcached路徑,然後添加選項--with-libmemcached-dir=libmemcached路徑.

五、應用

<?php
//連接
$mem=new Memcache;
$mem->connect("10.20.20.194",11210);

//保存數據
$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();
?>


六、Memcache方法說明
1、Memcache::add — 添加一個值,如果已經存在,則返回false
2、Memcache::addServer — 添加一個可供使用的服務器地址

參數:

第一個參數表示服務器的地址,

第二個參數表示端口,

第三個參數表示是否是一個持久連接,

第四個參數表示這台服務器在所有服務器中所占的權重,

第五個參數表示連接的持續時間,

第六個參數表示連接重試的間隔時間,默認為15,設置為-1表示不進行重試,

第七個參數用來控制服務器的在線狀態,

第八個參數允許設置一個回掉函數來處理錯誤信息。
3、Memcache::close — 關閉一個Memcache對象
4、Memcache::connect — 創建一個Memcache對象
5、memcache_debug — 控制調試功能,前提是php在編譯的時候使用了–enable-debug選項
6、Memcache::decrement — 對保存的某個key中的值進行減法操作
7、Memcache::delete — 刪除一個key值

參數:

第一個參數表示key,

第二個參數可選,表示刪除延遲的時間。
8、Memcache::flush — 清除所有緩存的數據,但是不會削去使用的內存空間。
9、Memcache::get — 獲取一個key值

參數:

一個參數,表示key
10、Memcache::getExtendedStats — 獲取進程池中所有進程的運行系統統計
11、Memcache::getServerStatus — 獲取運行服務器的參數

參數:

第一個參數表示服務器的地址,

第二個參數表示端口
12、Memcache::getStats — 返回服務器的一些運行統計信息

參數:

第一個參數表示要求返回的類型:reset, malloc, maps, cachedump, slabs, items, sizes;
第二個參數和第三個參數是在第一個參數設置為“cachedump”時使用的。
13、Memcache::getVersion — 返回運行的Memcache的版本信息
14、Memcache::increment — 對保存的某個key中的值進行加法操作
15、Memcache::pconnect — 創建一個Memcache的持久連接對象
16、Memcache::replace — R對一個已有的key進行覆寫操作

參數:

第一個參數是key,

第二個參數是value,

第三個參數可選,表示是否壓縮保存,

第四個參數可選,用來設置一個過期自動銷毀的時間。

17、Memcache::set — 添加一個值,如果已經存在,則覆寫

參數:

第一個參數是key,

第二個參數是value,

第三個參數可選,表示是否壓縮保存,

第四個參數可選,用來設置一個過期自動銷毀的時間。
18、Memcache::setCompressThreshold — 對大於某一大小的數據進行壓縮

參數:

第一個參數表示處理數據大小的臨界點,

第二個參數表示壓縮的比例,默認為0.2。
19、Memcache::setServerParams — 在運行時修改服務器的參數

參數:

第一個參數表示服務器的地址,

第二個參數表示端口,

第三個參數表示連接的持續時間,

第四個參數表示連接重試的間隔時間,默認為15,設置為-1表示不進行重試,

第五個參數用來控制服務器的在線狀態,

第六個參數允許設置一個回掉函數來處理錯誤信息。

Copyright © Linux教程網 All Rights Reserved