1
Memcached 概念
官方解釋如下:
What is Memcached?
Free & open source, high-performance, distributed memory object caching system, generic in nature, but intended for use in speeding up dynamic web applications by alleviating database load.
Memcached is an in-memory key-value store for small chunks of arbitrary data (strings, objects) from results of database calls, API calls, or page rendering.
Memcached is simple yet powerful. Its simple design promotes quick deployment, ease of development, and solves many problems facing large data caches. Its API is available for most popular
languages.
Memcached 是一個開源桥嗤、高性能、分布式內(nèi)存對象緩存系統(tǒng)。
Memcache和Memcached到底有什么區(qū)別?
Memcache 是 danga.com 的一個項目撵彻,最早是為 LiveJournal 服務(wù)的钦购,目前全世界不少人使用這個緩存項目來構(gòu)建自己大負(fù)載的網(wǎng)站,來分擔(dān)數(shù)據(jù)庫的壓力梯投。
Memcached 是一個開源、高性能况毅、分布式內(nèi)存對象緩存系統(tǒng)
Memcache 是這個項目的名稱分蓖,而 memcached 是它服務(wù)器端的主程序文件名
2
Memcached 作用
Memcached 是以守護(hù)程序方式運行于一個或多個服務(wù)器中,隨時接受客戶端的連接操作尔许∶春祝客戶端首先與 Memcached 服務(wù)建立連接,然后存取對象味廊。保存在 Memcached 中的對象是放置在內(nèi)存中的蒸甜,而不是在硬盤上。
Memcached 進(jìn)程運行之后余佛,會預(yù)申請一塊較大的內(nèi)存空間柠新,自己進(jìn)行管理,用完之后再申請辉巡,不是每次需要的時候去向操作系統(tǒng)申請恨憎。Memcached將對象保存在一個巨 大的Hash表中,它還使用NewHash算法來管理Hash表,從而獲得進(jìn)一步的性能提升憔恳。所以當(dāng)分配給Memcached的內(nèi)存足夠大的時 候瓤荔,Memcached的時間消耗基本上只是網(wǎng)絡(luò)Socket連接了。
總之钥组,Memcached用于動態(tài)Web應(yīng)用以減輕數(shù)據(jù)庫負(fù)載输硝。它通過在內(nèi)存中緩存數(shù)據(jù)和對象來減少讀取數(shù)據(jù)庫的次數(shù),從而提高動態(tài)程梦、數(shù)據(jù)庫驅(qū)動網(wǎng)站的速度点把。
3
Memcached 運行原理
Memcached處理的原子是每一個(key,value)對(以下簡稱kv對)作烟,key會通過一個hash算法轉(zhuǎn)化成hash-key愉粤,便于查找砾医、對比以及做到盡可能的散列拿撩。同時,memcached用的是一個二級散列如蚜,通過一張大hash表來維護(hù)压恒。
Memcached有兩個核心組件組成:服務(wù)端(Server)和客戶端(Client),在一個memcached的查詢中错邦,Client先通 過計算key的hash值來確定kv對所處在的Server位置探赫。當(dāng)Server確定后,客戶端就會發(fā)送一個查詢請求給對應(yīng)的Server撬呢,讓它來查找確 切的數(shù)據(jù)伦吠。因為這之間沒有交互以及多播協(xié)議,所以 memcached交互帶給網(wǎng)絡(luò)的影響是最小化的魂拦。
4
Memcached 特性
1毛仪、開源
開源地址:https://github.com/memcached/memcached/wiki
2、高性能
無論哪一種數(shù)據(jù)庫(oracle,mssql,mysql,db2……)芯勘,再怎么優(yōu)化箱靴,最終也避不開與慢速的硬盤進(jìn)行數(shù)據(jù)交換,但往往一旦涉及到 了硬盤的io操作荷愕,存取性能就會急劇下降衡怀。而Memcached的全部操作自始至終都是在內(nèi)存中進(jìn)行的,所以存取數(shù)據(jù)的效率非常高安疗。
當(dāng)然抛杨,大型網(wǎng)站對于數(shù)據(jù)庫的操作都會做優(yōu)化(讀寫分離,按照業(yè)務(wù)分庫分表)荐类。
3怖现、分布式
分布式系統(tǒng)網(wǎng)上比較專業(yè)的解釋是:一種計算機(jī)硬件的配置方式和相應(yīng)的功能配置方式。它是一種多處理器的計算機(jī)系統(tǒng)掉冶,各處理器通過互連網(wǎng)絡(luò)構(gòu)成統(tǒng)一 的系統(tǒng)真竖。系統(tǒng)采用分布式計算結(jié)構(gòu)脐雪,即把原來系統(tǒng)內(nèi)中央處理器處理的任務(wù)分散給相應(yīng)的處理器,實現(xiàn)不同功能的各個處理器相互協(xié)調(diào)恢共,共享系統(tǒng)的外設(shè)與軟件战秋。這 樣就加快了系統(tǒng)的處理速度,簡化了主機(jī)的邏輯結(jié)構(gòu)讨韭。
Memcache的分布式特性主要表現(xiàn)是:Memcached服務(wù)器端可以安裝在任意數(shù)量的server上脂信,提供并行存儲和計算的能力;Memcached客戶端和服務(wù)器端可以單獨安裝在任何獨立server上透硝。
5
Memcached 不足之處
1狰闪、數(shù)據(jù)是保存在內(nèi)存當(dāng)中的,一旦服務(wù)進(jìn)程重啟濒生,數(shù)據(jù)會全部丟失
對策:可以采取更改Memcached的源代碼埋泵,增加定期寫入硬盤的功能
2、Memcached以root權(quán)限運行罪治,而且Memcached本身沒有任何權(quán)限管理和認(rèn)證功能丽声,安 全性不足
對策:可以將Memcached服務(wù)綁定在內(nèi)網(wǎng)IP上,通過防火墻進(jìn)行防護(hù)
歡迎關(guān)注我的公眾號(同步更新文章):DoNet技術(shù)分享平臺