memcache模塊是一個高效的守護進程,提供用于內存緩存的過程式程序和面向對象的方便的接口,特別是對于設計動態web程序時減少對數據庫的訪問.memcache也提供用于通信對話(session_handler)的處理.
1.1.memcache在php.ini中的配置項列表 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 ////開源代碼Vevb.com
有關 php_ini_* 常量進一步的細節與定義參見php手冊php.ini 配置選項.下面摘一段代碼,給大家一個直觀的印象:(假設memcached安裝在172.10.10.10上面,端口號12121):
- $memcache = new memcached();
- $memcahce->connect('172.10.10.10', 12121);
- $memcache->set('key', 'value');//開源代碼Vevb.com
- $memcache->get('key');
上面的主要完成了memcached的簡單操作流程:連接memcached服務器,設置值,取值('key'的值是'value');
這里需要向大家說明一下addserver函數和connect函數,addserver是將多個服務器放在連接池,而connect只是將連接某一臺服務器,如果在使用了addserver,再使用connect,這里就會只使用一臺服務器,以下代碼是簡單模擬的客戶端操作:
- $fp = fsocketopen('172.10.10.10', 12121, $errorno, $errstr, 1);
- if(!$fp)
- echo "$errstr";
- else
- {
- $out = "get key rn";
- fwrite($out);
- while(!feof($fp))
- $str . = fgets($fp);
- if(stripos($str, 'end') ===0)//開源代碼Vevb.com
- exit("no value find")
- $arr = implode('rn', $str);
- echo $arr[1];
- }
簡單解釋上面的代碼,使用fsocketopen打開服務器的socket通訊接口,然后向其發送get key命令,然后獲取返回的數據,并解析返回的數據,這里都沒有做異常的處理,在編程的時候要填 memcached 是一個鍵值存儲系統,它將關鍵數據存儲在內存中,大大減少存取數據的時間,使用memcached的好處不言而喻,它不僅減少了系統訪問數據庫的壓力,而且提高系統的反應速度,至于什么樣的系統需要使用memcache,筆者建議數據量大,訪問頻繁系統可以采取memcached作為緩存的中間層.
使用memcached的缺點除了增加程序的代碼量,還有就是不能保證數據庫的實時性,另外在第一次初始化數據庫會需要額外的時間,但是這些的缺點比起它的優點是很微不足道.
新聞熱點
疑難解答