memcached

memcached

分布式的高速緩存系統
memcached是一套分布式的高速緩存系統,由LiveJournal的BradFitzpatrick開發,但目前被許多網站使用。這是一套開放源代碼軟件,以BSDlicense授權發布。memcached缺乏認證以及安全管制,這代表應該将memcached服務器放置在防火牆後。memcached的API使用三十二比特的循環冗餘校驗(CRC-32)計算鍵值後,将數據分散在不同的機器上。當表格滿了以後,接下來新增的數據會以LRU機制替換掉。由于memcached通常隻是當作高速緩存系統使用,所以使用memcached的應用程序在寫回較慢的系統時(像是後端的數據庫)需要額外的代碼更新memcached内的數據。memcached是一套分布式的高速緩存系統,由LiveJournal的BradFitzpatrick開發,但目前被許多網站使用。這是一套開放源代碼軟件,以BSDlicense授權發布。
    軟件名稱: 軟件平台: 軟件語言: 開發商: 軟件授權: 軟件版本: 軟件大小: 外文名:memcached 所屬:緩存系統 編寫語言:不限 通信手段:memcached協議

功能

memcached是一套分布式的快取系統,當初是Danga Interactive為了LiveJournal所發展的,但被許多軟件(如MediaWiki)所使用。這是一套開放源代碼軟件,以BSD license授權協議發布。

Memcached是一個高性能、分布式内存對象緩存系統,本質上是通用的,但目的是為了通過減輕數據庫負載來加快動态網絡應用的速度。

memcached缺乏認證以及安全管制,這代表應該将memcached服務器放置在防火牆後。

memcached的API使用32位元的循環冗餘校驗(CRC-32)計算鍵值後,将資料分散在不同的機器上。當表格滿了以後,接下來新增的資料會以LRU機制替換掉。由于memcached通常隻是當作快取系統使用,所以使用memcached的應用程式在寫回較慢的系統時(像是後端的數據庫)需要額外的程式碼更新memcached内的資料

memcached是以LiveJournal旗下Danga Interactive 公司的Brad Fitzpatric為首開發的一款軟件。已成為mixi、hatena、Facebook、Vox、LiveJournal等衆多服務中提高Web應用擴展性的重要因素。許多Web應用都将數據保存到RDBMS中,應用服務器從中讀取數據并在浏覽器中顯示。但随着數據量的增大、訪問的集中,就會出現RDBMS的負擔加重、數據庫響應惡化、網站顯示延遲等重大影響。

這時就該memcached大顯身手了。memcached是高性能的分布式内存緩存服務器。一般的使用目的是,通過緩存數據庫查詢結果,減少數據庫訪問次數,以提高動态Web應用的速度、提高可擴展性。

Memcached的守護進程(daemon)是用C寫的,但是客戶端可以用任何語言來編寫,并通過memcached協議與守護進程通信。但是它并不提供冗餘(例如,複制其hashmap條目);當某個服務器S停止運行或崩潰了,所有存放在S上的鍵/值對都将丢失。

Memcached由Danga Interactive開發,其最新版本發布于2010年,作者為Anatoly Vorobey和Brad Fitzpatrick。用于提升LiveJournal.com訪問速度的。LJ每秒動态頁面訪問量幾千次,用戶700萬。Memcached将數據庫負載大幅度降低,更好的分配資源,更快速訪問。

特征

memcached作為高速運行的分布式緩存服務器,具有以下的特點:

·協議簡單

·基于libevent的事件處理

·内置内存存儲方式

·memcached不互相通信的分布式

協議

memcached的服務器客戶端通信并不使用複雜的XML等格式,而使用簡單的基于文本行的協議。

因此,通過telnet也能在memcached上保存數據、取得數據。

下面是例子:

$telnet localhost11211

Trying 127.0.0.1

Connected to localhost.localdomain(127.0.0.1).

Escape character is'^]'.

set foo003(保存命令)

bar(數據)

STORED(結果)

get foo(取得命令)

VALUE foo03(數據)

bar(數據)

事件處理

libevent是個程序庫,它将Linux的epoll、BSD類操作系統的kqueue等事件處理功能封裝成統一的接口。即使對服務器的連接數增加,也能發揮O(1)的性能。memcached使用這個libevent庫,因此能在Linux、BSD、Solaris等操作系統上發揮其高性能。關于事件處理這裡就不再詳細介紹,可以參考Dan Kegel的The C10K Problem。

存儲方式

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

通信分布式

memcached盡管是“分布式”緩存服務器,但服務器端并沒有分布式功能。各個memcached不會互相通信以共享信息。那麼,怎樣進行分布式呢?這完全取決于客戶端的實現。本文也将介紹memcached的分布式。

功能

一個用PHP編寫的可視化的MemCached管理系統

MemAdmin是一款可視化的Memcached管理與監控工具,使用PHP開發,體積小,操作簡單。

主要功能:

服務器參數監控:STATS、SETTINGS、ITEMS、SLABS、SIZES實時刷新

服務器性能監控:GET、DELETE、INCR、DECR、CAS等常用操作命中率實時監控

支持數據遍曆,方便對存儲内容進行監視

支持條件查詢,篩選出滿足條件的KEY或VALUE

數組、JSON等序列化字符反序列顯示

兼容memcache協議的其他服務,如Tokyo Tyrant(遍曆功能除外)

支持服務器連接池,多服務器管理切換方便簡潔

使用技巧

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

的語言就有

·Perl

·PHP

·Python

·Ruby

·C#

·C/C++

·Lua

等等。

如何使用memcached-Server端

在服務端運行:

#./memcached-d-m2048-l10.0.0.40-p11211

這将會啟動一個占用2G内存的進程,并打開11211端口用于接收請求。由于32位系統隻能處理4G内存的尋址,所以在大于4G内存使用PAE的32位服務器上可以運行2-3個進程,并在不同端口進行監聽。

如何使用memcached-Client端

在應用端包含一個用于描述Client的Class後,就可以直接使用,非常簡單。

PHP Example:

$options["servers"]=array("192.168.1.41:11211","192.168.1.42:11212");

$options["debug"]=false;

$memc=new MemCachedClient($options);

$myarr=array("one","two",3);

$memc->set("key_one",$myarr);

$val=$memc->get("key_one");

print $val."n";//prints'one‘

print $val."n";//prints'two‘

print $val."n";//prints3

CentOS下的安裝

安裝

yum-y install memcached

設置為開機啟動

chkconfig--level2345 memcached on

啟動和停止

/etc/init.d/memcached start|stop

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

yum groupinstall"Development Tools"

Memcached用戶

以下站點都使用到了Memcached服務:

LiveJournal

Wikipedia

Flickr

Bebo

Twitter

Typepad

Yellowbot

Youtube

WordPress.com

Craigslist

Mixi

Memcached連接

我們可以通過telnet命令并指定主機ip和端口來連接Memcached服務。

語法

命令中的HOST和PORT為運行Memcached服務的IP和端口。

實例

以下實例演示了如何連接到Memcached服務并執行簡單的set和get命令。

本實例的Memcached服務運行的主機為127.0.0.1(本機)、端口為11211。

版本發布

2012年02月03日,Memcached1.4.13發布。

2012年08月02日,Memcached1.4.14發布。

2012年09月05日,Memcached1.4.15發布。

2015年04月25日,Memcached1.4.23發布。

上一篇:中央氣象台

下一篇:黨員權利

相關詞條

相關搜索

其它詞條