memcache學習筆記



memcache


一,Memcache概述===================


高性能分佈式的內存對象緩存系統,通過在內存裏維護一個巨大的hash表。


(key = value)


是一個軟件(服務軟件)c/s軟件


維護內存的,是將數據在內存中使用,減少了I/O 150K


開源的,


端口:11211



二,原理======================


Memcache 軟件 memcached


memcached是以守護程序方式運行於一個或多個服務器中,隨時接收客戶端的連接和操作。


客戶端可以使用各種語言去編寫,php,java,c,c++,perl,python,ruby等


基於libevent事件,即libevent庫





三,爲什麼在web中使用Memcache============


不用查數據庫,可以分佈式存儲




四,安裝===================


linux下安裝


先安裝 libevent

再安裝 memcache

./configure --with-libevent=/usr/local/libevent


啓動 Memcache -d -m 128 -l 192.168.1.111 -p 11211 -u root


停止:kill memcached

或 kill cat /tmp/memcached.pid





windows 安裝



放到目錄下,然後

命令

memcache.exe -d install


服務 -》裏面就有memcache


memcache.exe -d uninstall 缷載

memcache.exe -d -m 50 -l 127.0.0.1 -p 11211 start 自啓動





五,操作===============


telnet 192.168.1.111 80 ........apache

telnet 192.168.1.111 22 ........ssh

telnet 192.168.1.111 11211 ........memcache


stats 查看狀態


添加變量

add mykey1 1 3000 10

添加 變量 標誌位 有效期 字符串長度

helloworld


獲取變量

get myval1


使用get可以覆蓋以前的變量

set myval1 1 3000 10

1234567890

get myval1


刪除

delete myval1


清除所有的

flush_all



quit 退出


再進還能獲得,重啓服務後就沒有了


version 版本


stats 狀態


stats sizes 使用量


stats items


stats cachedump 1 1 查看一條標誌位爲1的數據


stats chchedump 1 0 查看所有標誌位爲1的數據






六,memcache在php 中使用=======================


下載memcache.dll擴展到php擴展目錄中,然後在php配置文件中添加,重啓,就有了對memcache的支持


php有一系列操作memcache的函數


有面向過程,還有面向對象


具體可以參考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 -- 分佈式服務器添加一個服務器





demo:


<?php


$mem = new Memcache;

$mem->connect("loclahost",11211);

//$mem->addServer("www.lamp.com",11221);

//$mem->addServer("192.168.1.111",11211);

//添加字符串

$mem->add("mystr","this is a memcachetest",MEMCACHE_COMPRESSED,3600);


$mem->set("mystr","wwwwwwwwwwwww",MEMCACHE_COMPRESSED,3600);


$str = $mem->get("mystr");

echo "string:".$str;



$mem->delete("mystr"); //刪除一個變量

$mem->flush(); //刪除所有的


//添加數組

$mem->add("myarr",array("aaa","bbb","ccc"));

print_r($mem->get("myarr"));



//添加對象

class Person{


var $name="zhangshan";

var $age=10;


}


$mem=add("myobj",new Person);

var_dump($mem->get("myobj"));



//讀出狀態

echo $mem->getVersion();

print_r($mem->getStats());




$mem->close();


?>





七,php在什麼地方使用memcache


1,數據庫讀出來的數據(select)

2, 在會話控制session中使用




同一個項目安裝兩次,key要有前綴

<?php


$mem = new Memcache;

$mem->connect("loclahost",11211);


$data = $mem->get("shops");



if(!$data){

$sql = "select * from shops";

$mysqli = new mysqli("localhost","root","","shopsdb");

$result = $mysqli->query($sql);

$data = array();

while($row=$result->Fetch_assoc()){

$data[]=$row;

}

$result->free();

$mysqli->close();


$mem->set("shops",$data,MEMCACHE_COMPERSSED,3360);


}



$mem->close();


?>






八,安全=================


1, 用內網的服務器做memcache服務器

2, 設置防火牆

命令:iptables


































發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章