序言
Memcached 是一個高性能的分布式內存對象緩存系統,用于動態Web應用以減輕數據庫負載。它通過在內存中緩存數據和對象來減少讀取數據庫的次數,從而提高動態、數據庫驅動網站的速度。
Memcached基于一個存儲鍵/值對的hashmap。其守護進程(daemon )是用C寫的,但是客戶端可以用任何語言來編寫,并通過memcached協議與守護進程通信。
當然memcached分為服務端和客戶端。服務端用來存放緩存,客戶端用來操作緩存。
客戶端有兩種常見的實現方式。
第一種是用php代碼根據服務端的通訊規則自己寫一個。
第二種是安裝php擴展庫(php-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
為PHP安裝Memcached擴展連接Memcached https://www.linuxidc.com/Linux/2016-05/131690.htm
Linux下Memcached安裝與啟用 https://www.linuxidc.com/Linux/2016-07/133423.htm
Memcached構建緩存加速集群部署 https://www.linuxidc.com/Linux/2017-02/140656.htm
Linux CentOS 7 下通過Memcached實現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 下通過Memcached實現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服務器端與PHP-Memcache客戶端安裝配置 https://www.linuxidc.com/Linux/2017-11/148428.htm
Memcached入門基礎教程 https://www.linuxidc.com/Linux/2017-11/148542.htm
站長資訊網