Memcached概念、作用、運行原理、特性、不足簡單梳理(1)


大家可能對memcached這種產品早有了解,或者已經應用在自己的網站中了,但是也有一些朋友從來都沒有聽說過或者使用過。
這都沒什么關系,本文旨在從各個角度綜合的介紹這種產品,盡量深入淺出,如果能對您現在或以后的工作有所幫助,筆者將感到無比榮幸。

Memcached概念、作用、運行原理、特性、不足簡單梳理(1)

Memcached下載安裝、NET對Memcached進行CRUD操作(2)

Memcached存Session數據、訪問安全性、使用場景總結(3)

一、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 是一個開源、高性能、分布式內存對象緩存系統。

官網地址:http://memcached.org/

下載地址:http://www.memcached.org/files/memcached-1.4.25.tar.gz

 

Memcache和Memcached到底有什么區別?

Memcache 是 danga.com 的一個項目,最早是為 LiveJournal 服務的,目前全世界不少人使用這個緩存項目來構建自己大負載的網站,來分擔數據庫的壓力。

Memcached 是一個開源、高性能、分布式內存對象緩存系統

Memcache 是這個項目的名稱,而 memcached 是它服務器端的主程序文件名

 

二、Memcached 作用

Memcached 是以守護程序方式運行於一個或多個服務器中,隨時接受客戶端的連接操作。客戶端首先與 Memcached 服務建立連接,然后存取對象。保存在 Memcached 中的對象是放置在內存中的,而不是在硬盤上。

Memcached 進程運行之后,會預申請一塊較大的內存空間,自己進行管理,用完之后再申請,不是每次需要的時候去向操作系統申請。Memcached將對象保存在一個巨大的Hash表中,它還使用NewHash算法來管理Hash表,從而獲得進一步的性能提升。所以當分配給Memcached的內存足夠大的時候,Memcached的時間消耗基本上只是網絡Socket連接了。

總之,Memcached用於動態Web應用以減輕數據庫負載。它通過在內存中緩存數據和對象來減少讀取數據庫的次數,從而提高動態、數據庫驅動網站的速度。

 

三、Memcached 運行原理

Memcached處理的原子是每一個(key,value)對(以下簡稱kv對),key會通過一個hash算法轉化成hash-key,便於查找、對比以及做到盡可能的散列。同時,memcached用的是一個二級散列,通過一張大hash表來維護。

Memcached有兩個核心組件組成:服務端(Server)和客戶端(Client),在一個memcached的查詢中,Client先通過計算key的hash值來確定kv對所處在的Server位置。當Server確定后,客戶端就會發送一個查詢請求給對應的Server,讓它來查找確切的數據。因為這之間沒有交互以及多播協議,所以 memcached交互帶給網絡的影響是最小化的。

四、Memcached 特性

1、開源

開源地址:https://github.com/memcached/memcached/wiki

2、高性能

無論哪一種數據庫(oracle,mssql,mysql,db2……),再怎么優化,最終也避不開與慢速的硬盤進行數據交換,但往往一旦涉及到了硬盤的io操作,存取性能就會急劇下降。而Memcached的全部操作自始至終都是在內存中進行的,所以存取數據的效率非常高。

當然,大型網站對於數據庫的操作都會做優化(讀寫分離,按照業務分庫分表)。

3、分布式

分布式系統網上比較專業的解釋是:一種計算機硬件的配置方式和相應的功能配置方式。它是一種多處理器的計算機系統,各處理器通過互連網絡構成統一的系統。系統采用分布式計算結構,即把原來系統內中央處理器處理的任務分散給相應的處理器,實現不同功能的各個處理器相互協調,共享系統的外設與軟件。這樣就加快了系統的處理速度,簡化了主機的邏輯結構。

Memcache的分布式特性主要表現是:Memcached服務器端可以安裝在任意數量的server上,提供並行存儲和計算的能力;Memcached客戶端和服務器端可以單獨安裝在任何獨立server上。

 

五、Memcached 不足

 

1、數據是保存在內存當中的,一旦服務進程重啟,數據會全部丟失

對策:可以采取更改Memcached的源代碼,增加定期寫入硬盤的功能

 

2、Memcached以root權限運行,而且Memcached本身沒有任何權限管理和認證功能,安 全性不足

對策:可以將Memcached服務綁定在內網IP上,通過防火牆進行防護

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM