程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> Memcached,memcached安裝

Memcached,memcached安裝

編輯:關於PHP編程

Memcached,memcached安裝


Memcached 是一個高性能的分布式內存對象緩存系統,用於動態Web應用以減輕數據庫負載。它通過在內存中緩存數據和對象來減少讀取數據庫的次數,從而提高動態、數據庫驅動網站的速度。

Memcached基於一個存儲鍵/值對的hashmap。其守護進程(daemon )是用C寫的,但是客戶端可以用任何語言來編寫,並通過memcached協議與守護進程通信。

存儲方式:

為了提高性能,memcached中保存的數據都存儲在memcached內置的內存存儲空間中。由於數據僅存在於內存中,因此重啟memcached、重啟操作系統會導致全部數據消失。另外,內容容量達到指定值之後,就基於LRU(Least Recently Used)算法自動刪除不使用的緩存。memcached本身是為緩存而設計的服務器,因此並沒有過多考慮數據的永久性問題。

使用技巧:

許多語言都實現了連接memcached的客戶端,其中以Perl、PHP為主。

一、這裡介紹windows環境的安裝。

1、下載memcache的windows穩定版,解壓放某個盤下面,比如在c:\memcached

2、在cmd下輸入 'c:\memcached\memcached.exe -d install' 安裝

3、再輸入: 'c:\memcached\memcached.exe -d start' 啟動。

以後memcached將作為windows的一個服務每次開機時自動啟動。這樣服務器端已經安裝完畢了。

4、很簡單。不過還沒完,你只是安裝了一個memcached caching server,還沒有和php建立關聯。所以在php程序裡還不能運用。

由於我的php版本是5.2.17的,下載的php_memcache.dll也要是對應的。如果你的php是5.3+的,可以在這裡下載

 php_memcache-cvs-20090703-5.3-nts-VC6-x86.zip

安裝與平時添加擴展完全一樣,把dll文件拷到你的php目錄的ext目錄下,然後,

在php.ini中添加extension=php_memcache.dll,重啟服務器,在phpinfo裡面就應該可以看到配置信息。

二、CentOS 下的安裝

安裝 yum -y install memcached

設置為開機啟動 chkconfig --level 2345 memcached on

啟動和停止 /etc/init.d/memcached start|stop

補充:如果安裝缺少其他支持,可以:

yum groupinstall "Development Tools"

常用操作

Memcache::add                 添加一個值,如果已經存在,則返回false 

Memcache::addServer           添加一個可供使用的服務器地址 

Memcache::close                關閉一個Memcache對象 

Memcache::connect             創建一個Memcache對象 

Memcache::debug              控制調試功能 

Memcache::decrement          對保存的某個key中的值進行減法操作 

Memcache::delete              刪除一個key值 

Memcache::flush                清除所有緩存的數據 

Memcache::get                 獲取一個key值 

Memcache::getExtendedStats   獲取進程池中所有進程的運行系統統計 

Memcache::getServerStatus     獲取運行服務器的參數 

Memcache::getStats            返回服務器的一些運行統計信息 

Memcache::getVersion               返回運行的Memcache的版本信息 

Memcache::increment                對保存的某個key中的值進行加法操作 

Memcache::pconnect                 創建一個Memcache的持久連接對象 

Memcache::replace                   R對一個已有的key進行覆寫操作 

Memcache::set                       添加一個值,如果已經存在,則覆寫 

Memcache::setCompressThreshold    對大於某一大小的數據進行壓縮 

Memcache::setServerParams          在運行時修改服務器的參數  

<?php  
//連接Memcache  
$mem = new Memcache;  
$mem->connect("localhost", 11211);  
//保存數據  
$mem->set('key1', 'This is first value', 0, 60);  
$val = $mem->get('key1');  
echo "Get key1 value: " . $val ."<br>";  
//替換數據  
$mem->replace('key1', 'This is replace value', 0, 60);  
$val = $mem->get('key1');  
echo "Get key1 value: " . $val . "<br>";  
//保存數組數據  
$arr = array('aaa', 'bbb', 'ccc', 'ddd');  
$mem->set('key2', $arr, 0, 60);  
$val2 = $mem->get('key2');  
echo "Get key2 value: ";  
print_r($val2);  
echo "<br>";  
//刪除數據  
$mem->delete('key1');  
$val = $mem->get('key1');  
echo "Get key1 value: " . $val . "<br>";  
//清除所有數據  
$mem->flush();  
$val2 = $mem->get('key2');  
echo "Get key2 value: ";  
print_r($val2);  
echo "<br>";  
//關閉連接  
$mem->close();  
?>  

memcached 的工作原理:

首先 memcached 是以守護程序方式運行於一個或多個服務器中,隨時接受客戶端的連接操作,客戶端可以由各種語言編寫,目前已知的客戶端 API 包括 Perl/PHP/Python/Ruby/Java/C#/C 等等。

PHP 等客戶端在與 memcached 服務建立連接之後,接下來的事情就是存取對象了,每個被存取的對象都有一個唯一的標識符 key,存取操作均通過這個 key 進行,保存到 memcached 中的對象實際上是放置內存中的,並不是保存在 cache 文件中的,這也是為什麼 memcached 能夠如此高效快速的原因。注意,這些對象並不是持久的,服務停止之後,裡邊的數據就會丟失。

memcachedb:

MemcacheDB是一個分布式、key-value形式的持久存儲系統。它不是一個緩存組件,而是一個基於對象存取的、可靠的、快速的持久存儲引擎。協議跟memcache一致(不完整),所以很多memcached客戶端都可以跟它連接。MemcacheDB采用Berkeley DB作為持久存儲組件,故很多Berkeley DB的特性的他都支持。

我們是站在巨人的肩膀上的。MemcacheDB的前端緩存是Memcached

前端:memcached的網絡層

後端:BerkeleyDB存儲

 

memcached和smarty的關系及區別是什麼啊?

Memcache是一個高性能的分布式的內存對象緩存系統,把緩存記錄到內存的系統.。

例如,從數據庫中獲取列表顯示,但並不想每次都讀取數據庫,這樣就需要用到緩存,而memcache就是其中的一種,它是把記錄保存在內存中使用

例如要重db獲取數據顯示出來,  db -> memcache -> client

首先先判斷memcache有沒有數據,如果沒有則讀取DB,然後把db獲取到的記錄保存在memcache

下次再需要讀取記錄時,就可以直接在memcache中讀取,這樣就可以分擔數據庫的負擔,而且速度快很多。

Smarty是一個使用PHP寫出來的模板引擎,目的就是要使PHP程序員同前端人員分離,使程序員改變程序的邏輯內容不會影響到前端人員的頁面設計。

smarty是運行在MVC結構的view中。

例如 php 我們要顯示一個變量,需要這樣寫 echo $a;

而用smarty則需要這樣寫 {$a} ,經過編譯後,會自動顯示出 echo $a;,是一樣的,smarty中的緩存,php要運行後,才可以輸出到浏覽器,php運行生成html輸出是需要運算的,而smarty則會把之前運行過的php生成後的html保存起來,如果再調用這個php則會直接輸出之前的html.起到緩存作用。

memcache 和 smarty沒有關系,兩者作用是不一樣的,沒有聯系的。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved