memcached及memcache擴展安裝

系統:centos6.3_x64
php


Memcache用到了libevent這個庫用於Socket的處理,因此還須要安裝libevent
git

1) 先安裝libevent:github

wget http://cloud.github.com/downloads/libevent/libevent/libevent-2.0.20-stable.tar.gzweb

# tar -zxvf libevent-2.0.20-stable.tar.gzapache

# cd libevent-2.0.20vim

# ./configure --prefix=/usrcentos

# make bash

# make install服務器

2) 安裝memcachedcookie

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

# tar zxvf memcached-1.4.15.tar.gz

# cd memcached-memcached-1.4.15

# ./configure --prefix=/usr/local --with-libevent=/usr

# make

# make install

啓動memcached

# /usr/local/bin/memcached -d -m 2048 -l 192.168.20.243 -p 11211 -u root

-d選項是啓動一個守護進程,

-m是分配給Memcache使用的內存數量,單位是MB,

-u是運行Memcache的用戶,我這裏是system_u,

-l是監聽的服務器IP地址,若是有多個地址的話,能夠用多個 -l YOU_IP

-p是設置Memcache監聽的端口,最好是1024以上的端口,

-c選項是最大運行的併發鏈接數,默認是1024,按照你服務器的負載量來設定,

-P是設置保存Memcache的pid文件

若是要結束Memcache進程,執行:

用# ps -e 查看進程

# kill pid memcached的進程號

運行後有些系統還會提示-bash: kill: pid: arguments must be process or job IDs

,可是用# ps -e查看進程,已經沒有memcached的進程了。


3) 安裝PHP的memcache擴展

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

# tar zxf memcache-2.2.7.tgz

# cd memcache-2.2.7

# find / -name phpize

/usr/local/php/bin/phpize

# /usr/local/php/bin/phpize //執行,若是有輸出結果則能夠執行擴展

Configuring for:

PHP Api Version: 20100412

Zend Module Api No: 20100525

Zend Extension Api No: 220100525

# ./configure --enable-memcache --with-php-config=/usr/local/php/bin/php-config --with-zlib-dir

# make

# make install

須要在php.ini(vi /etc/php.ini)文件中相應的位置加入:

extension_dir = "/usr/local/php/lib/php/extensions/no-debug-zts-20060613/"
extension=memcache.so
session.cookie_lifetime = 86400
session.gc_maxlifetime = 86400
session.save_handler = memcache
session.save_path = "tcp://192.168.20.243:11211,tcp://192.168.20.244:11211"

啓動memcached

重啓apache


優勢和缺點:

memcached部分實現的是內存空間分配和回收,以及存儲服務監聽和提供.對於分佈式的實現,取決於客戶端的使用和構造.咱們使用的客戶端是徹底支持分佈式的.只是可能會出現某些問題.

諸如一旦出現網絡問題, 網絡問題致使某個分佈式服務器中的一臺失去聯繫以後,到這臺機器恢復正常工做的這段時間內, 寫入分佈式服務器的數據將基本不能夠獲取. 能夠經過採用分佈式hash表的方式解決這個問題


測試memcached啓動是否鏈接正常

[root@web181 ~]# telnet 192.168.20.243 11211

Trying 127.0.0.1...
<30 new auto-negotiating client connection
Connected to localhost.localdomain (127.0.0.1).
Escape character is '^]'.
set test 0 0 10       #向test中存入數據
30: Client using the ascii protocol
<30 set test 0 0 10
test_value           #輸入的key爲test存入的數據
>30 STORED
STORED             #返回set結果
get test              #獲取的數據
<30 get test
>30 sending key test
>30 END
VALUE test 0 10
test_value            #取得的key爲test中的數據
END
quit
<30 quit
<30 connection closed.
Connection closed by foreign host.

關閉Memcached的命令以下:

[root@web181 ~]# kill `cat /var/run/memcached.pid`

測試Memcache的PHP擴展是否安裝成功

vim mem.php

<?php
$mem = new Memcache;
$mem->connect('192.168.20.243', 11211);
$mem->set(’test’, ‘Hello world!’, 0, 12);
$val = $mem->get(’test’);
echo $val;
?>

123605191.png

相關文章
相關標籤/搜索