使用PHP鏈接、操縱Memcached的原理和教程

http://www.crazyant.net/1014.htmlphp

Memcahced開源分佈式內存對象緩存系統經過減小數據庫的負擔,從而可以加速你的web應用。在本文中我將解釋怎樣實現一個基於Memcahced的緩存系統。html

數據庫

實例中使用的數據庫表包含一個自增的id,一個標題和一個連接字段:mysql

 

第一次用戶請求到達

第一次用戶發送請求,PHP程序會在訪問db數據庫的同時,將訪問的數據寫入Memcached系統。git

Memcached

如圖所示,user發送了req請求,application發送數據請求到database,database在將數據返回給application的同時,將數據緩存到了Memcached服務器。github

第二次用戶請求到達了

第二次用戶請求到達,會直接讀取Memcached服務器的緩存,而不是數據庫中的內容,從而減輕了服務器的負擔。web

Memechaced2

本圖顯示,第二次的請求,application直接從Memcached(簡稱Mc)讀取數據。sql

Memcached的安裝方法

網絡上有大量關於Memcached安裝的方法,其實它就是一個緩存服務器應用程序,意思就像是你裝了個Mysql同樣,裝好了用帳號密碼IP地址連一下就能使用。數據庫

如下是一些很好的資源:apache

php_memcache.dllwindows

在windows上安裝Memcached的方法

在Windows7的Xampp上安裝Memcached的方法

在Windows7上的PHP5.3安裝Memcached的方法

index.php用PHP操做Memcached的演示

 

 

db.php用於鏈接數據庫的代碼

你須要改變代碼中的IP地址、用戶名、密碼、數據庫名字。

 

注:本文參考Memcached with PHP

關於Windows7 下面安裝memcached和php的memcache擴展

http://blog.sina.com.cn/s/blog_61d0b6cd0100w9qq.html

Php代碼與memcached的交互和與mysql的交互原理是同樣的,須要安裝一個服務器端的memcached ,現有的交互處理過程已經封裝成了一個php的擴展了;須要在php.ini中,將這個擴展加進去。

Php memcached官方手冊地址:http://cn2.php.net/manual/en/memcached.get.php

說說個人安裝過程:

1.個人環境:php-5.2.6. memcached-win32-1.2.6.

2. 根據下面的步驟安裝完之後,能夠去控制面板看看memcached服務是否啓動起來。若是沒有此服務須要從新安裝,若是有了,不能啓動,能夠看一下是否是路徑錯誤了。【個人就是路徑錯誤,啓動不起來。找不到指定文件。】 

3.php5.2.6自帶memcache.dll文件,能夠打開phpinfo()看看有沒有memcache的擴展。若是沒有,能夠去pecl地址下載對應版本的memcache替換掉原來的。

一:下載地址:

php擴展庫pecl下載地址:

http://museum.php.net/php5/

二:安裝與配置:

      安裝方法一:下載之後,解壓,而後放到C盤根目錄下。雙擊memcached.exe就能夠啓動memcached服務了,這時,你能夠打開任務管理器,若是在進程裏出現memcached.exe就說明memcached服務已經啓動了,還要讓cmd窗口開着,這樣纔是啓動了memcached服務。

      安裝方法二:

         1.下載Windows版的memache的壓縮包

         2.解壓到合適的位置如:D:memached目錄下面。

         3.進入命令行切換到該目錄下面,能夠用dir看一下目錄下面的文件信息。

         4. 輸入:memached.exe -d install 安裝服務器。

         5. 輸入:memached.exe -d start啓動服務器,等到下次啓動系統的時候,此服務會自動啓動。默認的端口號爲11211.

配置:

1.    下載pecl模塊包(地址如上),解壓後將php_memache.dll放到php目錄的ext子目錄下,爲了使得能正常使用,最好下載和php版本一致的模塊包。

2.    在php.ini文件中導入'extension=php_memcache.dll'

而後重啓apache,估計就能夠了(能夠在phpinfo.php 中,看看是否有memcached模塊),固然了,咱們能夠寫一個實驗一下

   $memcache_obj = new Memcache;

$memcache_obj->connect('localhost', 11211); 

$memcache_obj->set('var_key', 'This is a memcached test!',MEMCACHE_COMPRESSED, 50);

echo $memcache_obj->get('var_key');

 

備註:

1)memcached 的幾個指令:

-p監聽的端口
-l鏈接的IP地址, 默認是本機
-d start啓動memcached服務
-d restart重起memcached服務
-d stop|shutdown關閉正在運行的memcached服務
-d install安裝memcached服務
-d uninstall卸載memcached服務
-u以的身份運行(僅在以root運行的時候有效)
-m 最大內存使用,單位MB。默認64MB
-M 內存耗盡時返回錯誤,而不是刪除項
-c最大同時鏈接數,默認是1024
-f 塊大小增加因子,默認是1.25
-n 最小分配空間,key+value+flags默認是48
-h 顯示幫助

2)memcached相關的函數:

01.Memcache::add —添加一個值,若是已經存在,則返回false
02.Memcache::addServer — 添加一個可供使用的服務器地址
03.Memcache::close —關閉一個Memcache對象
04.Memcache::connect —建立一個Memcache對象
05.memcache_debug —控制調試功能
06.Memcache::decrement —對保存的某個key中的值進行減法操做

07.Memcache::delete —刪除一個key值
08.Memcache::flush —清除全部緩存的數據
09.Memcache::get —獲取一個key值
10.Memcache::getExtendedStats —獲取進程池中全部進程的運行系通通計
11.Memcache::getServerStatus —獲取運行服務器的參數
12.Memcache::getStats —返回服務器的一些運行統計信息
13.Memcache::getVersion —返回運行的Memcache的版本信息
14.Memcache::increment —對保存的某個key中的值進行加法操做
15.Memcache::pconnect —建立一個Memcache的持久鏈接對象
16.Memcache::replace — R對一個已有的key進行覆寫操做
17.Memcache::set —添加一個值,若是已經存在,則覆寫
18.Memcache::setCompressThreshold —對大於某一大小的數據進行壓縮
19.Memcache::setServerParams —在運行時修改服務器的參數

3)zend framework的cache後端支持memcached,咱們也能夠來試試看

$front = array('lifeTime' =>100,'automatic_serialization' =>true);
     $back = array('server' =>array(array('host' =>'127.0.0.1','port' =>11211,'persistent' =>true)),compression =>true);       //後端server是個二維數組,每一維表明一個鏈接。
     $cache = Zend_Cache::factory("Core","Memcached",$front,$back);
     $cache->save('This is zend memcached','zend');
     echo $cache->load('zend')."<br />";

    如今zend framework 的代碼,本身尚未詳細研究,等本身之後在學習的過程當中,能夠嘗試用一下;

相關文章
相關標籤/搜索