memcahe 是一個分佈式儲存系統,分佈式主要體如今各個服務器之間是沒有聯繫的,主要是經過內存來維護一張hash表,hash表主要是以鍵值對方式存儲的,就是一款cs軟件包.php
keymysql |
valuelinux |
mystrsql |
「abc」數據庫 |
myarr安全 |
Array(「aa」, 「cc」);服務器 |
objectsession |
Object值app |
工做原理tcp
Memcache 軟件, memcached
memcached是以守護程序方式運行在一個或者多個服務之中,隨時客服端的操做和鏈接.
關於memcache的安裝
在linux 下面的安裝
基於libevent事件
Linux下
安裝libevent時
./configure –with-libevent=/usr
Make && make install
安裝memcached
./configure –with-libevent=/usr
Make && make install
啓動Memcahced –d –m 128 –l 192.168.1.111 –p 11211 –u root
中止: kill `cat /tmp/memcached.pid`;
Killall memcached
Windows下
Memcahced.exe -d install [uninstall]
Memcached.exe –d -m 50 –l 127.0.0.1 -p 11211 start
、Memcached服務器的管理(啓動)
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 ,最大好像2G
-M 內存耗盡時返回錯誤,而不是刪除項
-c 最大同時鏈接數,默認是1024
-f 塊大小增加因子,默認是1.25
-n 最小分配空間,key+value+flags默認是48
-h 顯示幫助
7、如何遍歷memcache
8、在PHP程序中使用Memcached
a 在PHP安裝Memcache擴展
能夠按面向過程方式
面向對象的方式
b 在PHP什麼地方使用memcache
1、 數據庫讀出來的數據(select)使用memcache處理
2、 在會話控制session中使用
c 實例
9、Memcache的安全(不讓別人訪問)
1 .內網
2. 設置放火牆
Iptables –A INPUT –p tcp –s 192.168.1.111 –dport 11211 –j ACCEPT
Iptables –A INPUT –p udp –s 192.168.1.111 –dpost 11211 –j ACCEPT
安裝. 而後開始 memcached -d start
Command |
Description |
Example |
get |
Reads a value |
get mykey |
set |
Set a key unconditionally |
set mykey 0 60 5 |
add |
Add a new key |
add newkey 0 60 5 |
replace |
Overwrite existing key |
replace key 0 60 5 |
append |
Append data to existing key |
append key 0 60 15 |
prepend |
Prepend data to existing key |
prepend key 0 60 15 |
incr |
Increments numerical key value by given number |
incr mykey 2 |
decr |
Decrements numerical key value by given number |
decr mykey 5 |
delete |
Deletes an existing key |
delete mykey |
flush_all |
Invalidate specific items immediately |
flush_all |
Invalidate all items in n seconds |
flush_all 900 |
|
stats |
Prints general statistics |
Stats |
Prints memory statistics |
stats slabs |
|
Prints memory statistics |
stats malloc |
|
Print higher level allocation statistics |
stats items |
|
stats detail |
||
stats sizes |
||
Resets statistics |
stats reset |
|
version |
Prints server version. |
version |
verbosity |
Increases log level |
verbosity |
quit |
Terminate telnet session |
quit |
pid |
memcache服務器的進程ID |
uptime |
服務器已經運行的秒數 |
time |
服務器當前的unix時間戳 |
version |
memcache版本 |
pointer_size |
當前操做系統的指針大小(32位系統通常是32bit) |
rusage_user |
進程的累計用戶時間 |
rusage_system |
進程的累計系統時間 |
curr_items |
服務器當前存儲的items數量 |
total_items |
從服務器啓動之後存儲的items總數量 |
bytes |
當前服務器存儲items佔用的字節數 |
curr_connections |
當前打開着的鏈接數 |
total_connections |
從服務器啓動之後曾經打開過的鏈接數 |
connection_structures |
服務器分配的鏈接構造數 |
cmd_get |
get命令(獲取)總請求次數 |
cmd_set |
set命令(保存)總請求次數 |
get_hits |
總命中次數 |
get_misses |
總未命中次數 |
evictions |
爲獲取空閒內存而刪除的items數(分配給memcache的空間用滿後須要刪除舊的items來獲得空間分配給新的items) |
bytes_read |
總讀取字節數(請求字節數) |
bytes_written |
總髮送字節數(結果字節數) |
limit_maxbytes |
分配給memcache的內存大小(字節) |
threads |
當前線程數 |
pid memcache服務器的進程ID
uptime 服務器已經運行的秒數
time 服務器當前的unix時間戳
version memcache版本
pointer_size 當前操做系統的指針大小(32位系統通常是32bit)
rusage_user 進程的累計用戶時間
rusage_system 進程的累計系統時間
curr_items 服務器當前存儲的items數量
total_items 從服務器啓動之後存儲的items總數量
bytes 當前服務器存儲items佔用的字節數
curr_connections 當前打開着的鏈接數
total_connections 從服務器啓動之後曾經打開過的鏈接數
connection_structures 服務器分配的鏈接構造數
cmd_get get命令(獲取)總請求次數
cmd_set set命令(保存)總請求次數
get_hits 總命中次數
get_misses 總未命中次數
evictions 爲獲取空閒內存而刪除的items數(分配給memcache的空間用滿後須要刪除舊的items來獲得空間分配給新的items)
bytes_read 總讀取字節數(請求字節數)
bytes_written 總髮送字節數(結果字節數)
limit_maxbytes 分配給memcache的內存大小(字節)
threads 當前線程數
具體能夠參考PHP手冊 「LXXXIV. Memcache Functions」 這章。
Memcache面向對象的經常使用接口包括:
Memcache::connect -- 打開一個到Memcache的鏈接
Memcache::pconnect -- 打開一個到Memcache的長鏈接
Memcache::close -- 關閉一個Memcache的鏈接
Memcache::set -- 保存數據到Memcache服務器上
Memcache::get -- 提取一個保存在Memcache服務器上的數據
Memcache::replace -- 替換一個已經存在Memcache服務器上的項目(功能相似Memcache::set)
Memcache::delete -- 從Memcache服務器上刪除一個保存的項目
Memcache::flush -- 刷新全部Memcache服務器上保存的項目(相似於刪除全部的保存的項目)
Memcache::getStats -- 獲取當前Memcache服務器運行的狀態
Memcache::addServer -- 分佈式服務器添加一個服務器
使用 php 操做 memcache
<?php
$mem=new Memcache;
$mem->connect("localhost", 11211);
/*
* 注意:
* 1. 同一個項目安裝兩次,key要有前綴
*
*
*/
$sql="select * from shops";
$key=substr(md5($sql), 10, 8);
$data=$mem->get($key);
if(!$data){
$mysqli=new mysqli("localhost", "root", "123456", "xsphpdb");
$result=$mysqli->query($sql);
$data=array();
while($row=$result->Fetch_assoc()){
$data[]=$row;
}
$result->free();
$mysqli->close();
$mem->set($key, $data, MEMCACHE_COMPRESSED, 3600);
echo $sql;
}
echo '<pre>';
print_r($data);
echo '</pre>';
$mem->close();
比較不錯的資料 推薦 http://my.oschina.net/leetiger/blog/201248#OSC_h3_2