MemCached缓存知识知多少?
1. MemCached是神馬?
? ??Memcached??是一個高性能的分布式內存對象緩存系統,用于動態Web應用以減輕數據庫負載。它通過在內存中緩存數據和對象來減少讀取數據庫的次數,從而提高動態、數據庫驅動網站的速度。Memcached基于一個存儲鍵/值對的hashmap。其守護進程(daemon )是用C寫的,但是客戶端可以用任何語言來編寫,并通過memcached協議與守護進程通信。
? ? MemCached最早是由 Brad Fitzpatrick 在2003年為LiveJournal而開發的緩存程序。目前最新的版本為v1.4.22.
2. MemCached的特點?
? ??協議簡單:memcached的服務器客戶端通信并不使用復雜的MXL等格式,而是使用簡單的基于文本的協議。
????基于libevent的事件處理:libevent是個程序庫,他將Linux 的epoll、BSD類操作系統的kqueue等時間處理功能封裝成統一的接口。 ? ?memcached使用這個libevent庫,因此能在Linux、BSD、Solaris等操作系統上發揮其高性能。
? ??內置內存存儲方式:為了提高性能,memcached中保存的數據都存儲在memcached內置的內存存儲空間中。由于數據僅存在于內存中,因此重啟memcached,重啟操作系統會導致全部數據消失。另外,內容容量達到指定的值之后memcached回自動刪除不適用的緩存。
? ??不互通信的分布式:memcached盡管是“分布式”緩存服務器,但服務器端并沒有分布式功能。各個memcached不會互相通信以共享信息。他的分布式主要是通過客戶端實現的。 ??
?
3. MemCached存儲方式?
? ? 為了提高性能,memcached中保存的數據都存儲在memcached內置的內存存儲空間中。由于數據僅存在于內存中,因此重啟memcached、重啟操作系統會導致全部數據消失。另外,內容容量達到指定值之后,就基于LRU(Least Recently Used)算法自動刪除不使用的緩存。memcached本身是為緩存而設計的服務器,因此并沒有過多考慮數據的永久性問題。
4. MemCached與Redis的PK?
? ??每秒處理的請求數不是瓶頸:Redis只使用單核,而Memcached可以使用多核,所以二者比較起來,平均每一個核上,Redis在存儲小數據時比Memcached性能更高。而在100k以上的數據中,Memcached性能要高于Redis。雖然Redis最近也在存儲大數據的性能上進行優化,但是比起Memcached,還是稍有遜色。
? ??內存使用效率:如果使用簡單的key-value存儲,Memcached的內存利用率更高。而如果Redis采用hash結構來做key-value存儲,由于其組合式的壓縮,其內存利用率會高于Memcached。當然,這和你的應用場景和數據特性有關。
? ??數據持久化與數據同步:Redis支持,MemCached不支持。
? ??數據結構:Redis相比Memcached來說,擁有更多的數據結構,并支持更豐富的數據操作。通常在Memcached里,你需要將數據拿到客戶端來進行類似的修改再set回去。這大大增加了網絡IO的次數和數據體積。在Redis中,這些復雜的操作通常和一般的GET/SET一樣高效。
本文轉自 genuinecx 51CTO博客,原文鏈接:http://blog.51cto.com/favccxx/1626486,如需轉載請自行聯系原作者
總結
以上是生活随笔為你收集整理的MemCached缓存知识知多少?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: SQL Server 2008 R2 系
- 下一篇: linux下升级python2.0到py