memcache:快取
快取分類(儲存位置)
1.檔案快取
2.記憶體快取
3.資料庫快取(實際開發很少用)
快取分類(儲存資料的不同)
1.頁面快取
2.區域性快取
3.變數快取(資料快取)
memcache快取方式
1.記憶體快取
2.變數快取(資料快取)
memcache特點
1.資料駐留在記憶體中
2.速度快
3.儲存資料量小
4.計算機斷電後,資料全部丟失
memcache支援網路
1.服務
2.埠號
memcache資源包
memcached-1.2.6-win32-bin.zip(32位)
memcache-1.2.6-win64-bin.zip(64位)
memcache服務相關操作
1.安裝服務
1)開啟命令提示符視窗(以管理員方式開啟)
以管理員身份執行的方法是在c:/windows/system32/下找到cmd之後右鍵「以管理員身份執行」就好了。
bcdedit /set "" displaybootmenu yes
2)輸入如下命令,進行安裝
切換到e盤(memcached所在的目錄)
e:memcached\memcached.exe -d install
2.解除安裝服務
1)開啟命令提示符視窗(以管理員方式開啟)
2)輸入如下命令,進行安裝
切換到e盤(memcache所在的目錄)
memcached\memcached.exe -d uninstall
3.啟動或停止服務
1)開啟命令提示符視窗(以管理員方式開啟)
2)輸入如下命令,進行安裝
切換到f盤(memcache所在的目錄)
e:回車
memcached\memcached.exe -d start
memcached\memcached.exe -d stop
php操作memcache
修改php.ini配置檔案,新增memcache擴充套件
將php_memcache.dll複製到php安裝目錄中的ext目錄
在php.ini新增如下**
extension=php_memcache.dll
重啟apache服務
memcache快取資料的方法
$mem=new memcache();
$mem->connect("主機位址",11211);
$變數=$mem->get(「名」);
if($變數==null)
$mem->close();
memcache方法
1.鏈結memcache服務
$mem->connect();
2.儲存資料
$mem->set(名,值,標識,快取時間);
3.取資料
$變數=$mem->get(名);
4.替換快取中的資料
$mem->replace(名,值,標識,快取時間);
5.刪除指定的快取資料
$mem->delete(名)
6.清空快取
$mem->flush()
7.關閉連線
$mem->colse()
<?php
header
("content-type:text/html;charset=utf-8");
//memcache實現記憶體快取
$mem
= new
memcache
();//例項化
$mem
->
connect(
"localhost"
,11211
);//連線服務
//從快取中取資料 $t
=$mem
->
get(
"t");
if($t
==null
)//快取中沒有t這個資料
//替換現有的資料
//$mem->replace("t",time(),null,3);
//刪除乙個現有的快取資料
//$mem->delete("t");
//清空快取
//$mem->flush();
echo
$t;
//關閉與服務的連線
$mem
->
close();
?>
使用memcached的場景
想象有這麼乙個場景,乙個電子商務**,在**的左側會是商品的分類,中間是商品搜尋結果的列表,可以檢視商品資訊和商家的基本資訊和相關商家的信譽度資訊。
在這個場景下,因為乙個商場的類別不會經常改變的。實時性不是很高,這樣應該放到快取中取的。
一般時候做法:
執行一次或者多次sql從資料庫中查詢全站的商品分類---->>遞迴形成你所需的分類tree------>>進入處理資料------->>顯示到頁面上。
在使用 memcached做法:
第一次顯示的時候:判斷memcached快取中是否有該分類----沒有----->執行一次或者多次sql從資料庫中查詢全站的商品分類----->放到memcached中------->>進入處理資料------->>顯示到頁面
第二次顯示的判斷memcached快取中是否有該分類----有--->>-從memcached中取出資料-------->>進入處理資料------->>顯示到頁面
當這個過程首次發生時,資料將正常地從資料庫或其他資料來源載入,然後再儲存到 memcached 內。當下一次訪問此資訊時,它就會從 memcached 中取出,而不是從資料庫載入,節省了時間和 cpu 迴圈。
但是要是資料中的資料改變怎麼來更新memcached中的資料呢
過程為:更新資料庫中分類的資訊------->找到memcached中key值,刪除------>重新插入到你的memcached中就可以了
memcached 內的儲存操作是原子的,所以資訊的更新不會讓客戶機只獲得部分資料;它們獲得的或者是老版本,或者是新版本。
面臨的問題
對於高併發高訪問的web應用程式來說,資料庫訪問瓶頸一直是個令人頭疼的問題。特別當你的程式架構還是建立在單資料庫模式,而乙個資料池連線數峰 值已經達到500的時候,那你的程式執行離崩潰的邊緣也不遠了。很多小**的開發人員一開始都將注意力放在了產品需求設計上,缺忽視了程式整體效能,可擴 展性等方面的考慮,結果眼看著訪問量一天天網上爬,可突然發現有一天**因為訪問量過大而崩潰了,到時候哭都來不及。所以我們一定要未雨綢繆,在資料庫還 沒罷工前,想方設法給它減負,這也是這篇文章的主要議題。
Memcached 的使用方法
1.介紹 memcache是乙個高效能的分布式的記憶體物件快取系統,通過在記憶體裡維護乙個統一的巨大的hash表,它能夠用來儲存各種格式的資料.簡單的說就是將資料呼叫到記憶體中,然後從記憶體中讀取,從而大大提高讀取速度,客戶端第一次使用應用程式的時候會從資料庫裡取出來返回給客戶端,這時就需要把資料儲...
Python的with和as使用方法
對於乙個事先需要設定事後需要清理的任務,with可以很簡潔的處理並且監控中間的異常。但是實際上它的功能完全可以用try except else finally語句實現,但是with as更加簡潔,可以看做try語句的簡化版。非常常見的例子是檔案的開啟 同樣的功能,如果用try語句 f open 1....
pythonpip使用方法 pip使用方法整理
匯出專案已安裝的pip包 pip list 檢視專案中安裝的包 pip freeze requirements.txt 將專案中所用到的第三方庫輸出到requirements.txt中 pip install 版本號 pip install i 本次使用清華源進行安裝 離線安裝第三方庫 一鍵安裝整個...