linux下的Memcache安裝:
1. 下載 memcache的linux版本,注意 memcached 用 libevent 來做事件驅動,因此要先安裝有 libevent。
2. 安裝 pecl::memcache。
用 pecl 命令行工具安裝:
pecl install memcache
或直接從源碼安裝:
phpize
./configure
make
make install
Windows下的Memcache安裝:
1. 下載memcache的windows穩定版,解壓放某個盤下面,好比在c:\memcached
2. 在終端(也即cmd命令界面)下輸入 ‘c:\memcached\memcached.exe -d install’ 安裝
3. 再輸入: ‘c:\memcached\memcached.exe -d start’ 啓動。NOTE: 之後memcached將做爲windows的一個服務每次開機時自動啓動。這樣服務器端已經安裝完畢了。
4.下載php_memcache.dll,請本身查找對應的php版本的文件
5. 在C:\winnt\php.ini 加入一行 ‘extension=php_memcache.dll’
6.從新啓動Apache,而後查看一下phpinfo,若是有memcache,那麼就說明安裝成功!
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 顯示幫助
php.ini中的配置:
[Memcache]
; 一個高性能的分佈式的內存對象緩存系統,經過在內存裏維護一個統一的巨大的hash表,
; 它可以用來存儲各類格式的數據,包括圖像、視頻、文件以及數據庫檢索的結果等。
; 是否在遇到錯誤時透明地向其餘服務器進行故障轉移。
memcache.allow_failover = On
; 接受和發送數據時最多嘗試多少個服務器,只在打開memcache.allow_failover時有效。memcache.max_failover_attempts = 20
; 數據將按照此值設定的塊大小進行轉移。此值越小所需的額外網絡傳輸越多。
; 若是發現沒法解釋的速度下降,能夠嘗試將此值增長到32768。
memcache.chunk_size = 8192
; 鏈接到memcached服務器時使用的默認TCP端口。
memcache.default_port = 11211
; 控制將key映射到server的策略。默認值"standard"表示使用先前版本的老hash策略。
; 設爲"consistent"能夠容許在鏈接池中添加/刪除服務器時沒必要從新計算key與server之間的映射關係。
;memcache.hash_strategy = "standard"; 控制將key映射到server的散列函數。默認值"crc32"使用CRC32算法,而"fnv"則表示使用FNV-1a算法。
; FNV-1a比CRC32速度稍低,可是散列效果更好。
;memcache.hash_function = "crc32"
;memcache也能夠做爲session的存儲模塊,具體參看:memcache PHP 的 session.save_handler.php
$memcache = new Memcache; $memcache->connect('localhost', 11211) or die ("Could not connect"); $version = $memcache->getVersion(); echo "Server's version: ".$version."<br>\n"; $tmp_object = new stdClass; $tmp_object->str_attr = 'test'; $tmp_object->int_attr = 123; $memcache->set('key', $tmp_object, false, 10) or die ("Failed to save data at the server"); echo "Store data in the cache (data will expire in 10 seconds)<br>\n"; $get_result = $memcache->get('key'); echo "Data from the cache:<br>\n"; var_dump($get_result);