序言
Memcached 是一個(gè)高性能的分布式內(nèi)存對(duì)象緩存系統(tǒng),用于動(dòng)態(tài)Web應(yīng)用以減輕數(shù)據(jù)庫(kù)負(fù)載。它通過(guò)在內(nèi)存中緩存數(shù)據(jù)和對(duì)象來(lái)減少讀取數(shù)據(jù)庫(kù)的次數(shù),從而提高動(dòng)態(tài)、數(shù)據(jù)庫(kù)驅(qū)動(dòng)網(wǎng)站的速度。
Memcached基于一個(gè)存儲(chǔ)鍵/值對(duì)的hashmap。其守護(hù)進(jìn)程(daemon )是用C寫(xiě)的,但是客戶(hù)端可以用任何語(yǔ)言來(lái)編寫(xiě),并通過(guò)memcached協(xié)議與守護(hù)進(jìn)程通信。
當(dāng)然memcached分為服務(wù)端和客戶(hù)端。服務(wù)端用來(lái)存放緩存,客戶(hù)端用來(lái)操作緩存。
客戶(hù)端有兩種常見(jiàn)的實(shí)現(xiàn)方式。
第一種是用php代碼根據(jù)服務(wù)端的通訊規(guī)則自己寫(xiě)一個(gè)。
第二種是安裝php擴(kuò)展庫(kù)(php-memcached)。
一、準(zhǔn)備工作
創(chuàng)建目錄source和package,分別用來(lái)放源碼和編譯后的文件
# mkdir /source/
# mkdir /package/
二、memcached(服務(wù)端篇)
首先先安裝memcached依賴(lài)庫(kù)libevent。
2.1 安裝libevent
[官方網(wǎng)站] 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
[官方網(wǎng)站] 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
本章總結(jié):
通過(guò)以上操作就很簡(jiǎn)單的把memcached服務(wù)端編譯好了。這時(shí)候就可以打開(kāi)服務(wù)端進(jìn)行工作了。
# /lnmp/memcached/bin/memcached -d -m 2048 -l 127.0.0.1 -p 11211 -u root -c 1024 –P /tmp/memcached.pid
啟動(dòng)參數(shù)說(shuō)明:
-d 選項(xiàng)是啟動(dòng)一個(gè)守護(hù)進(jìn)程。
-m 分配給Memcache使用的內(nèi)存數(shù)量,單位是MB,默認(rèn)64MB。
-l 監(jiān)聽(tīng)的IP地址。(默認(rèn):INADDR_ANY,所有地址)
-p 設(shè)置Memcache的TCP監(jiān)聽(tīng)的端口,最好是1024以上的端口。
-u 運(yùn)行Memcache的用戶(hù),如果當(dāng)前為root的話(huà),需要使用此參數(shù)指定用戶(hù)。
-c 選項(xiàng)是最大運(yùn)行的并發(fā)連接數(shù),默認(rèn)是1024。
-P 設(shè)置保存Memcache的pid文件。
三、客戶(hù)端篇:php代碼
這種方法實(shí)現(xiàn)客戶(hù)端最簡(jiǎn)單,直接下載我寫(xiě)的《SL_Memcached》類(lèi)庫(kù)include到自己的項(xiàng)目里調(diào)用相關(guān)對(duì)象就行了。
當(dāng)然,你也可以用其他語(yǔ)言實(shí)現(xiàn)。這里就不在講了。
使用方法如下:
<?php
include(‘memcached.class.php’);
$memcached = new SL_Memcached(); //實(shí)例化對(duì)象
$memcached->connect(‘127.0.0.1:11211’); //連接memcached服務(wù)端
$memcached->set(‘key1’, ‘我是快樂(lè)的鍵值’); //設(shè)置鍵值
$memcached->set(‘key2’, ‘我就要被刪了’); //設(shè)置鍵值
$memcached->delete(‘key2’); //刪除鍵值
var_dump($memcached->get(‘key1’)); //獲取鍵值
var_dump($memcached->get(‘key2’)); //獲取鍵值
?>
輸出:
string(21) “我是快樂(lè)的鍵值”
NULL
四、客戶(hù)端篇:php-memcached
4.1 安裝libmemcached
[官網(wǎng)] http://libmemcached.org/
命令流程:
# yum install libmemcached libmemcached-devel
4.2 安裝php-memcached
[官方網(wǎng)站] 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
備注:
安裝成功后會(huì)有如下類(lèi)似提示:
Installing shared extensions: /lnmp/php/lib/php/extensions/no-debug-non-zts-20151012/
這說(shuō)明在 /lnmp/php/lib/php/extensions/no-debug-non-zts-20151012/ 該目錄下會(huì)生成memcached.so
這個(gè)就是memcached.so所在目錄。我們先記住這個(gè)目錄。
開(kāi)始配置php-memcached
打開(kāi)php.ini
# vi /lnmp/php/etc/php.ini
在合適的位置添加如下
extension = /lnmp/php/lib/php/extensions/no-debug-non-zts-20151012/memcached.so
五、常見(jiàn)錯(cuò)誤總匯
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
說(shuō)明:沒(méi)有找到php的附加庫(kù)memcached.so所需動(dòng)態(tài)庫(kù)libmemcached.so.11。出現(xiàn)上述錯(cuò)誤一般是沒(méi)有將libmemcached目錄設(shè)置到環(huán)境變量里。
我們添加到環(huán)境變量LD_LIBRARY_PATH里就搞定了。
# export LD_LIBRARY_PATH=/package/libmemcached/lib:$LD_LIBRARY_PATH
為PHP安裝Memcached擴(kuò)展連接Memcached https://www.linuxidc.com/Linux/2016-05/131690.htm
Linux下Memcached安裝與啟用 https://www.linuxidc.com/Linux/2016-07/133423.htm
Memcached構(gòu)建緩存加速集群部署 https://www.linuxidc.com/Linux/2017-02/140656.htm
Linux CentOS 7 下通過(guò)Memcached實(shí)現(xiàn)Session共享 https://www.linuxidc.com/Linux/2016-09/135552.htm
Memcached的安裝配置及將PHP的session保存在Memcached中 https://www.linuxidc.com/Linux/2017-02/140679.htm
Linux CentOS 7 下通過(guò)Memcached實(shí)現(xiàn)Session共享 https://www.linuxidc.com/Linux/2016-09/135552.htm
CentOS 6.6下Memcached 源碼安裝配置 https://www.linuxidc.com/Linux/2015-09/123019.htm
Linux CentOS 7下Memcached 安裝與配置 https://www.linuxidc.com/Linux/2016-09/135553.htm
Memcached服務(wù)器端與PHP-Memcache客戶(hù)端安裝配置 https://www.linuxidc.com/Linux/2017-11/148428.htm
Memcached入門(mén)基礎(chǔ)教程 https://www.linuxidc.com/Linux/2017-11/148542.htm