天天看點

Memcache所有方法及參數詳解以及使用方法

參考http://www.php.net/manual/zh/function.Memcache-add.php

Memcache::add - 添加一個值,如果已經存在,則傳回false

Memcache::addServer - 添加一個可供使用的伺服器位址

Memcache::close - 關閉一個Memcache對象

Memcache::connect - 建立一個Memcache對象

memcache_debug - 控制調試功能

Memcache::decrement - 對儲存的某個key中的值進行減法操作

Memcache::delete - 删除一個key值

Memcache::flush - 清除所有緩存的資料

Memcache::get - 擷取一個key值

Memcache::getExtendedStats - 擷取程序池中所有程序的運作系統統計

Memcache::getServerStatus - 擷取運作伺服器的參數

Memcache::getStats - 傳回伺服器的一些運作統計資訊

Memcache::getVersion - 傳回運作的Memcache的版本資訊

Memcache::increment - 對儲存的某個key中的值進行加法操作

Memcache::pconnect - 建立一個Memcache的持久連接配接對象

Memcache::replace -對一個已有的key進行覆寫操作

Memcache::set - 添加一個值,如果已經存在,則覆寫

Memcache::setCompressThreshold - 對大于某一大小的資料進行壓縮

Memcache::setServerParams - 在運作時修改伺服器的參數

Memcache::add用法

bool Memcache::add ( string $key , mixed $var [, int $flag [, int $expire ]] )

說明:

如果$key不存在的時候,使用這個函數來存儲$var的值。功能相同的函數是memcache_add()。

參數:

$key :将要存儲的鍵值。

$var :存儲的值,字元型和整型會按原值儲存,其他類型自動序列化以後儲存。

$flag:是否用MEMCACHE_COMPRESSED來壓縮存儲的值,true表示壓縮,false表示不壓縮。

$expire:存儲值的過期時間,如果為0表示不會過期,你可以用unix時間戳或者描述來表示從現在開始的時間,但是你在使用秒數表示的時候,不要超過2592000秒 (表示30天)。

傳回值:

如果成功則傳回 TRUE,失敗則傳回 FALSE。如果$key值已經存在,則會傳回FALSE。 其他情況下Memcache::add()的用法類似于Memcache::set()。

例子:

<?php

$memcache_obj = memcache_connect("localhost", 11211);

memcache_add($memcache_obj, 'var_key', 'test variable', false, 30);

$memcache_obj->add('var_key', 'test variable', false, 30);

?>

Memcache::addServer用法

bool Memcache::addServer ( string $host [, int $port [, bool $persistent [, int $weight [, int $timeout [, int$retry_interval [, bool $status [, callback $failure_callback ]]]]]]] )

添加一個可供使用的伺服器位址到連接配接池中,連接配接用Memcache::addServer打開,腳本執行完後自動關閉,或者可以用Memcache::close()手動關閉。相同函數是memcache_add_server()。

當用這個方法的時候(相對于Memcache::connect()和 Memcache::pconnect()方法),網絡連接配接隻有等需要的時候才會建立,是以不會因為增加很多的伺服器到連接配接池而增加系統負擔,因為很多伺服器可能沒有使用。

故障恢複會發生在這個方法執行的任何階段,隻要其他的伺服器是正常的,這些連接配接請求的失敗使用者不會注意到。任何一種socket或者memcached伺服器級的錯誤可以觸發故障恢複。正常的用戶端錯誤比如增加一個存在的鍵值不會引發故障恢複。

$host伺服器的位址

$port伺服器端口

$persistent是否是一個持久連接配接

$weight這台伺服器在所有伺服器中所占的權重

$timeout連接配接的持續時間

$retry_interval連接配接重試的間隔時間,預設為15,設定為-1表示不進行重試

$status控制伺服器的線上狀态

$failure_callback允許設定一個回掉函數來處理錯誤資訊。

如果成功則傳回 TRUE,失敗則傳回 FALSE。

$memcache = new Memcache;

$memcache->addServer('memcache_host', 11211);

$memcache->addServer('memcache_host2', 11211);

$memcache_obj = memcache_connect('memcache_host', 11211);

memcache_add_server($memcache_obj, 'memcache_host2', 11211);

Memcache::close用法

bool Memcache::close ( void )

關閉memcache伺服器連接配接。這個函數不會關閉長連接配接,長連接配接隻有在web伺服器關閉或者重新開機的時候才會關閉。相同的函數memcache_close()

memcache_close($memcache_obj);

$memcache_obj = new Memcache;

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

$memcache_obj->close();

Memcache::connect用法

bool Memcache::connect ( string $host [, int $port [, int $timeout ]] )

打開memcached伺服器連接配接,建立一個到memcached伺服器的連接配接,用Memcache::connect打開的連接配接會在腳本執行完畢後自動關閉。你也可以用Memcache::close()去關閉連接配接。相同的函數是memcache_connect()。

$host:指向memcached正在收聽的連結的主機,這個參數會有另一種特殊的連接配接方式unix:///path/to/memcached.sock,即用unix的域名sockets,這種情況下,端口必須設定為0

$port:指向memcached正在收聽的連結的端口,用unix的域名sockets的情況下,端口必須設定為0

$timeout:用于連接配接守護程序的秒數,當你改變預設的1秒的值的時候,你需要考慮一下,如果你的連接配接太慢的話,你可能會失去緩存的優勢。

$memcache->connect('memcache_host', 11211);

memcache::debug

bool memcache_debug ( bool $on_off )

控制調試功能,前提是php在編譯的時候使用了-enable-debug選項,否則這個函數不會有作用。

$on_off:true表示開啟調試,false表示關閉調試

如果php在編譯的時候使用了-enable-debug選項,傳回true,否則傳回false

Memcache::decrement用法

int Memcache::decrement ( string $key [, int $value ] )

Memcache::decremen方法的作用是對儲存的某個key中的值進行減法操作,用法跟Memcache::increment類似。

你也可以用memcache_decrement()函數。

Key:想要減少的鍵的名字

Value:想要減少的值。

如果成功,傳回被減少後的值,如果失敗傳回false。

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

$memcache->set('test_item', 8);

$memcache->increment('test_item', 4);

echo $memcache->decrement('test_item', 7);

// 顯示 5

這個例子連Memcache::increment函數都一塊示範了。

Memcache::delete用法

bool Memcache::delete ( string $key [, int $timeout ] )

删除一個key值,如果參數$timeout被設定,那麼存儲的值會在設定的秒數以後過期,你也可以用函數memcache_delete()

memcache_delete($memcache_obj, 'key_to_delete', 10);

$memcache_obj->delete('key_to_delete', 10);

Memcache::flush

bool Memcache::flush ( void )

清除所有緩存的資料。Memcache::flush實際上沒有釋放資源,它僅僅将所有的緩存标記為過期,這樣可以使新的緩存來覆寫被占的記憶體空間。一樣的函數是memcache_flush()

memcache_flush($memcache_obj);

$memcache_obj->flush();

Memcache::get

string Memcache::get ( string $key [, int &$flags ] )

array Memcache::get ( array $keys [, array &$flags ] )

方法的作用是擷取一個key值,key值可以是一個數組,結果會包含鍵值對。

$key是鍵值或者一個鍵的數組值。

$flags如果這個參數存在,那麼$flags跟寫入這個參數的值相關,這些$flags 類似于Memcache::set()函數裡的$flags。

如果成功,則傳回key對應的值,如果失敗則傳回false.

$var = memcache_get($memcache_obj, 'some_key');

$var = $memcache_obj->get('some_key');

$var = memcache_get($memcache_obj, Array('some_key', 'another_key'));

$var = $memcache_obj->get(Array('some_key', 'second_key'));

Memcache::getExtendedStats

array Memcache::getExtendedStats ([ string $type [, int $slabid [, int $limit ]]] )

擷取程序池中所有程序的運作系統統計。相同函數是memcache_get_extended_stats()

$type表示要求傳回的類型:reset, malloc, maps, cachedump, slabs, items, sizes;

$slabid第一個參數設定為"cachedump"時使用的。

$limit第一個參數設定為"cachedump"時使用的。

如果成功,傳回統計資訊,失敗會傳回false

     $memcache_obj = new Memcache;

     $memcache_obj->addServer('memcache_host', 11211);

     $memcache_obj->addServer('failed_host', 11211);

     $stats = $memcache_obj->getExtendedStats();

   //slabs機制配置設定管理記憶體的情況

$statsslab = $memcache_obj->getExtendedStats(slabs);

Memcache::getServerStatus

int Memcache::getServerStatus ( string $host [, int $port ] )

擷取運作伺服器的參數。傳回一個伺服器線上或者離線的狀态。相同的函數是memcache_get_server_status()

$host:正在收聽的連接配接的主機

$port正在收聽的連接配接的主機的端口,預設是11211

成功傳回伺服器狀态,伺服器沒有啟動會傳回0,其他數字的時候表示伺服器是啟動狀态的。

echo $memcache->getServerStatus('memcache_host', 11211);

$memcache = memcache_connect('memcache_host', 11211);

echo memcache_get_server_status($memcache, 'memcache_host', 11211);

Memcache::getStats

array Memcache::getStats ([ string $type [, int $slabid [, int $limit ]]] )

傳回伺服器的一些運作統計資訊。相同的函數是memcache_get_stats()

成功傳回伺服器的統計資訊數組,失敗傳回false。