簡介:
Memcached是一款開源、高性能、分佈式內存對象緩存系統,可應用各種需要緩存的場景,其主要目的是通過降低對Database的訪問來加速web應用程序。它是一個基於內存的“鍵值對”存儲,用於存儲數據庫調用、API調用或頁面引用結果的直接數據,如字符串、對象等。
特性:
Memcached是一款開發工具,它既不是一個代碼加速器,也不是數據庫中間件。其設計哲學思想主要反映在如下方面:
1. 簡單key/value存儲:服務器不關心數據本身的意義及結構,只要是可序列化數據即可。存儲項由“鍵、過期時間、可選的標誌及數據”四個部分組成;
2. 功能的實現一半依賴於客戶端,一半基於服務器端:客戶負責發送存儲項至服務器端、從服務端獲取數據以及無法連接至服務器時採用相應的動作;服務端負責接收、存儲數據,並負責數據項的超時過期;
3. 各服務器間彼此無視:不在服務器間進行數據同步;
4. O(1)的執行效率,查找效率非常之高;
5. 清理超期數據:默認情況下,Memcached是一個LRU緩存,同時,它按事先預訂的時長清理超期數據;但事實上,memcached不會刪除任何已緩存數據,只是在其過期之後不再爲客戶所見;而且,memcached也不會真正按期限清理緩存,而僅是當get命令到達時檢查其時長;
常見操作命令:
Memcached提供了爲數不多的幾個命令來完成與服務器端的交互,這些命令基於memcached的協議實現。
存儲類命令:set, add, replace, append, prepend
獲取數據類命令:get, delete, incr/decr
統計類命令:stats, stats items, stats slabs, stats sizes
清理命令: flush_all
安裝memcached(rpm包安裝):
前提:已經搭建好lamp或者lnmp
# yum install -y php php-devel httpd mysql mysql-server
1、yum安裝memcached
# yum groupinstall "Development Tools" "Server Platform Deveopment" -y 安裝開發包組
# yum install -y memcached
2、啓動memcached服務
# service memcached start
3、telnet簡單測試
[root@a ~]# telnet 127.0.0.1 11211
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
add testkey 0 20 1 緩存一個鍵testkey,序列0 緩存時間20S 1字節
x 值爲x
STORED
get testkey 請求testkey
VALUE testkey 0 1
x 值爲x
END
get testkey 20秒後再次請求,就沒有值了
END
4、爲php安裝memcache插件
1.安裝memcache插件
#tar xf memcache-2.2.7.tgz
#cd memcache-2.2.7
#phpize
#./configure --with-php-config=/usr/bin/php-config
# make && make install(安裝完成會出現下方提示)
Installing shared extensions: /usr/lib64/php/modules/
2.配置php支持memcache
# vim /etc/php.ini
extension = "/usr/lib64/php/modules/memcache.so" 添加此行
# service httpd restart
4、創建PHP頁面測試
# vim /var/www/html/index.php
<?php
$mem = new Memcache;
$mem->connect("127.0.0.1", 11211) or die("Could not connect");
$version = $mem->getVersion();
echo "Server's version: ".$version."<br/>\n";
$mem->set('hellokey', 'Hello World', 0, 600) or die("Failed to save data at the memcached server");
echo "Store data in the cache (data will expire in 600 seconds)<br/>\n";
$get_result = $mem->get('hellokey');
echo "$get_result is from memcached server.";
?>
5、訪問測試