一、Memcache簡介與配置
Memcache模塊提供了於memcached方便的面向過程及面向對象的接口,memcached是爲了降低動態web應用 從數據庫加載數據而產生的一種常駐進程緩存產品。
1.1.memcache在php.ini中的配置項列表
名稱 | 默認值 | 是否可變 | 改變日誌 |
memcache.allow_failover | “1” | PHP_INI_ALL | Available since memcache 2.0.2. |
memcache.max_failover_attempts | "20" | PHP_INI_ALL | Available since memcache 2.1.0. |
memcache.chunk_size | "8192" | PHP_INI_ALL | Available since memcache 2.0.2. |
memcache.default_port | "11211" | PHP_INI_ALL | Available since memcache 2.0.2. |
memcache.hash_strategy | "standard" | PHP_INI_ALL | Available since memcache 2.2.0. |
memcache.hash_function | "crc32" | PHP_INI_ALL | Available since memcache 2.2.0. |
session.save_handler | "files" | PHP_INI_ALL | Supported since memcache 2.1.2 |
session.save_path | "" | PHP_INI_ALL | Supported since memcache 2.1.2 |
有關 PHP_INI_* 常量進一步的細節與定義參見PHP手冊php.ini 配置選項。
1.2.以下是配置項的簡要解釋
memcache.allow_failover Boolean
在錯誤時是否透明的故障轉移到其他服務器上處理(注:故障轉移是動詞)。
memcache.max_failover_attempts integer
定義服務器的數量類設置和獲取數據,只聯合 memcache.allow_failover 一同使用。
memcache.chunk_size integer
數據將會被分成指定大小(chunk_size)的塊來傳輸,這個值(chunk_size)越小,寫操作的請求就越多,如果發現其他的無法解釋的減速,請試着將這個值增大到32768.
memcache.default_port string
當連接memcache服務器的時候,如果沒有指定端口這個默認的tcp端口將被用。
memcache.hash_strategy string
控制在映射 key 到服務器時使用哪種策略。設置這個值一致能使hash 算法始終如一的使用於服務器接受添加或者刪除池中變量時將不會被重新映射。設置這個值以標準的結果在舊的策略被使用時。
memcache.hash_function string
控制哪種 hsah 函數被應用於 key映射 到服務器過程中,默認值“crc32”使用 CRC32 算法,而“fnv”則表示使用 FNV-1a 算法。
session.save_handler string
通過設置這個值爲memcache來確定使用 memcache 用於通信對話的處理(session handler)。
session.save_path string
定義用於通話存儲的各服務器鏈接的分隔符號,例如:“tcp://host1:11211, tcp://host2:11211”。
每服務器個鏈接可以包含被接受於該服務器的參數,比較類似使用 Memcache::addServer() 來添加的服務器,例如:“tcp://host1:11211?persistent=1&weight=1&timeout=1& amp;retry_interval=15”。
1.3.memcache常量列表
名稱 | 類型 | 描述 |
MEMCACHE_COMPRESSED | integer | 用於調整在使用 Memcache::set(), Memcache::add() 和 Memcache::replace() 幾個函數時的壓縮比率。 |
MEMCACHE_HAVE_SESSION | integer | 如果通信對話的處理(session handler)被允許使用其值爲 1,其他情況值爲 0。 |
二、Memcache函數
Memcache::add — 增加一個條目到緩存服務器
Memcache::addServer — 向連接池中添加一個memcache服務器
Memcache::close — 關閉memcache連接
Memcache::connect — 打開一個memcached服務端連接
Memcache::decrement — 減小元素的值
Memcache::delete — 從服務端刪除一個元素
Memcache::flush — 清洗(刪除)已經存儲的所有的元素
Memcache::get — 從服務端檢回一個元素
Memcache::getExtendedStats — 緩存服務器池中所有服務器統計信息
Memcache::getServerStatus — 用於獲取一個服務器的在線/離線狀態
Memcache::getStats — 獲取服務器統計信息
Memcache::getVersion — 返回服務器版本信息
Memcache::increment — 增加一個元素的值
Memcache::pconnect — 打開一個到服務器的持久化連接
Memcache::replace — 替換已經存在的元素的值
Memcache::set — Store data at the server
Memcache::setCompressThreshold — 開啓大值自動壓縮
Memcache::setServerParams — 運行時修改服務器參數和狀態
三、Memcache 使用
一般情況下要將memcache集成到框架緩存模塊中(開源程序和框架一般都已經集成),以便在程序開發中靈活運用
<?php
class cache_memcache {
private $memcache = null;
public function __construct() {
$this->memcache = new Memcache;
$this->memcache->connect(HOST, PORT, TIMEOUT);
}
public function memcache() {
$this->__construct();
}
public function get($name) {
$value = $this->memcache->get($name);
return $value;
}
public function set($name, $value, $ttl = 0, $ext1='', $ext2='') {
return $this->memcache->set($name, $value, false, $ttl);
}
public function delete($name) {
return $this->memcache->delete($name);
}
public function flush() {
return $this->memcache->flush();
}
}
?>