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
本文出自 “為明天做好準備” 部落格,請務必保留此出處http://zaikuip.blog.51cto.com/4128335/1300125