《PHP學習:PHP數據庫操作二:memcache用法分析》要點:
本文介紹了PHP學習:PHP數據庫操作二:memcache用法分析,希望對您有用。如果有疑問,可以聯系我們。
相關主題:memcache擴展 / 鍵值KeyValue存儲數據庫
本文實例講述了PHP數據庫操作之memcache用法.分享給大家供大家參考,具體如下:PHP教程
在一個高并發的web應用中,數據庫存取瓶頸一直是個大問題,一旦達到某個極限,數據庫很容易崩潰,但是如果我們把常用的數據放到內存中,在需要的時候從內存中取,不光讀取速度快,而且節約數據庫IO.PHP教程
memcache簡介PHP教程
Memcache是一個高性能的分布式的內存對象緩存系統,通過在內存里維護一個統一的巨大的hash表,它能夠用來存儲各種格式的數據,包括圖像、視頻、文件以及數據庫檢索的結果等.簡單的說就是將數據調用到內存中,然后從內存中讀取,從而大大提高讀取速度.PHP教程
memcache的mem是內存(memory),cache是緩存,結合是內存緩存的意思.我們應用memcache時,讀取數據先從memcache內讀取,若查找不到再去數據庫里查找,并將數據存入memcache,待下次查找時便能輕易找到.PHP教程
需要注意:PHP教程
memcache是內存型的數據庫 ,因為內存的關閉釋放的特性,memcache也無法持久化存儲內容;
memcache內部是分塊存儲,所以大于1M的數據也無法存儲.
memcache依賴libevent庫,安裝前需確認已經安裝了libevent庫.
memcache是一個輕量級的內存型數據庫,只支持key-value型的存儲.
memcache中沒有關于用戶,密碼的設置,所以在配置時要配置防火墻的端口限制連接,以達到安全的目的.
使用repcached也能輕易實現memcache的單master單slave主從復制.PHP教程
memcache的應用場景PHP教程
存儲大量不需要持久存儲或數據庫內已存在不會變動的數據.
讀取數據非常頻繁數據,要求小于1M.
數據類型簡單的key-value型數據.
計算好的結果和渲染后的網頁模板文件.
因其原子遞增性,可以用來計數.
因為可以設置數據過期時間的特性,存儲期限數據.不過需要注意,memcache會在分配的內存不足時以最近最少使用原則(LRU)重用內存,可能會導致信息提前被刪除.
用memcache存儲session信息,以達到多服務器session共享.需要配置:php.ini:PHP教程
session.save_handler = memcache //設置session的儲存方式為memcache memcache.hash_strategy = "consistent"http://設置memcache的hash算法為一致性哈希算法. session.save_path = "tcp:/ip:port" //設置session儲存的位置,多臺memcache用逗號隔開.
memcache服務器的安裝PHP教程
memcache的安裝簡單,服務器可以在其官網http://www.memcached.org/下載,解壓后在其目錄下運行./configure -prefix=/path編譯,然后make / make test / make install 得到可以直接執行的二進制文件.PHP教程
使用./memcached命令即可開啟服務器,其常用參數如下:PHP教程
-p port 監聽端口 (默認: 11211)
-d 以后臺方式運行Memcached
-u username 運行Memcached的賬戶
-m n 最大的內存使用, 單位是MB,默認 64 MB
-c connections 最大連接數量, 默認是 1024PHP教程
memcache的常用命令PHP教程
用memcache客戶端或telnet連接到memcache后,就可以對memcache進行操作了.PHP教程
memcache數據結構簡單,所以命令行命令也很少,下面以一條常用命令來簡析一下命令格式:PHP教程
add key flags expire_time length \r\n value
flags:是否壓縮/序列化,通常為0.PHP教程
expire_time:從存儲后多久過期.以秒(s)為單位,最大為30天的長度,超過30天的長度被視為時間戳表示"到什么時候過期",若設為0表示永不過期.PHP教程
length:value長度,輸入長度回車之后,命令行會讀取你接下來輸入的length個字符.PHP教程
set key flags expire_time length //如果有值則覆蓋原值,沒有則新增,add在有值時會存儲失敗 get key //獲取key的值 replace key flags expire_time length// 替換一個已存在的key append/preappend key flags expire_time length// 給key的value后面/前面添加新內容. preappend key flags expire_time length // 給key的value前面添加新內容. inc/dec key [n] //key的值遞增/遞減1/[n] delete key //刪除一個key flush_all [n] //[在n秒后]刪除全部數據 stats [options] //獲取memcache[有關某一項]的詳細信息
PHP的memcache擴展及應用PHP教程
在https://pecl.php.net/index.php搜索獲取到所需的memcache擴展包.PHP教程
linux系統,直接挑選版本(推薦最新stable穩定版)下載,解壓后在解壓目錄下用phpize工具產生configure文件,并用它安裝,安裝完成后在/php.ini中添加extension.具體可參考前文:/article/121314.htm.PHP教程
windows下要點擊鏈接右邊的“windows logo DLL”鏈接,并在新打開的頁面中,按照版本、32位/64位、線程安全/非線程安全來選擇自己所需要的擴展,具體選項可以在phpinfo();頁面看到.下載完成后,將其放入phppath/ext/目錄下,然后在php.ini中添加extension=php_memcacache.dll;重啟服務器完成安裝.PHP教程
在phpinfo()頁面中看到memcache擴展后,說明安裝成功,我們就可以在php腳本中使用關于memcache的類函數庫了.PHP教程
在手冊中我們可以找到許多關于php的memcache擴展的使用,以下是一個典型的memcache使用流程.PHP教程
$m=new Memcache(); $m->connect($host,$port); $m->add($key,$value[,flags,$expire_time]); $content=$m->get($key); $m->close();
這是一個簡單的memcache連接程序,在進行memcache分布式存儲時,還需要用到$memcache->addServer()
向memcache集群中添加服務器.PHP教程
此外,還有get(),set(),flush(),delete()等方法,用法都大同小異,在手冊上也能找得到,這里提供一個本站的php手冊下載地址:/books/6183.htmlPHP教程
更多關于PHP相關內容感興趣的讀者可查看本站專題:《php緩存技術總結》、《PHP數組(Array)操作技巧大全》、《php字符串(string)用法總結》、《PHP錯誤與異常處理方法總結》、《php面向對象程序設計入門教程》、《php+mysql數據庫操作入門教程》及《php常見數據庫操作技巧匯總》PHP教程
希望本文所述對大家PHP程序設計有所幫助.PHP教程
轉載請注明本頁網址:
http://www.snjht.com/jiaocheng/296.html