一. 什麼是memcached
memcached 是一個高性能的分布式內存對象緩存系統,用於動態web應用以減輕數據庫教程負載。它通過在內存中緩存數據和對象來減少讀取數據庫的次數,從而提供動態、數據庫驅動網站的速度。
相信很多人都用過緩存,在 .net 中也有內置的緩存機制,還有很多第三方工具如apache,nginx等可以做靜態資源的緩存,同時我們也可以制定自己的緩存機制,緩存數據庫查詢的數據以減少對數據庫的頻繁操作。但是很多時候我們總是感覺這些緩存總不盡人意, memcached可以解決你不少的煩惱問題。最少在我的學習中解決了我不少問題,所以決定記錄下來分享。
memcached基於一個存儲鍵/值對的hashmap。其守護進程是用c寫的,但是客戶端可以用任何語言來編寫(本文使用c#作為例子),並通過memcached協議與守護進程通信。可 能這些東西都太高深了,我們暫不做研究。
二. 分布式緩存
其實 memcached作為一個分布式緩存數據服務,但是每個服務之間根本沒有進行相互通信,這裡可能與我理解的分布式有點區別,可能是我才疏學淺,也可能是每個人思考問題的角度不同。memcached 客戶端就是通過一種分布式算法將數據保存到不同的memcached服務器上,將數據進行緩存。分布式緩存,可以而知memcached可以進行大數據量的緩存。這點可以彌補我們之前很多人都遇到的將數據緩存到應用服務器上,而且只能緩存少量數據,否則對應用服務器的影響非常大。
memcached應用機制圖:
這個圖是有點簡陋了,但是問題還是能夠描述的清楚的,緩存機制的基本原理就是先查詢數據保存到memcached中,地址在此請求就直接從memcached緩存中取數據,這樣就可以減少對服務器請求壓力。
1 2 3