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


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

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

數據庫

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

 

第一次用戶請求到達

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

Memcached

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

第二次用戶請求到達了

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

Memechaced2

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

Memcached的安裝方法

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

以下是一些很好的資源:

php_memcache.dll

在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 的代碼,自己還沒有詳細研究,等自己以后在學習的過程中,可以嘗試用一下;


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM