程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> memcached是什麼?memcache該何使用?

memcached是什麼?memcache該何使用?

編輯:關於PHP編程

Memcached是什麼?

Memcached是danga.com(運營LiveJournal的技術團隊)開發的一套分布式內存對象緩存系統,用於在動態系統中減少數據庫負載,提升性能。很多人都把它當作和SharedMemory那種形式的存儲載體來使用,雖然memcached使用了同樣的“Key=>Value”方式組織數據,但是它和共享內存、APC等本地緩存有非常大的區別。Memcached是分布式的,也就是說它不是本地的。它基於網絡連接(當然它也可以使用localhost)方式完成服務,它本身是一個獨立於應用的程序或守護進程(Daemon方式)。

Memcached使用libevent庫實現網絡連接服務,理論上可以處理無限多的連接,但是它和Apache不同,它更多的時候是面向穩定的持續連接的,所以它實際的並發能力是有限制的。在保守情況下memcached的最大同時連接數為200,這和 Linux 線程能力有關系,這個數值是可以調整的。關於libevent可以參考相關文檔。

Memcached內存使用方式也和APC不同。APC是基於共享內存和MMAP的,memcachd有自己的內存分配算法和管理方式,它和共享內存沒有關系,也沒有共享內存的限制,通常情況下,每個memcached進程可以管理2GB的內存空間,如果需要更多的空間,可以增加進程數。

Memcached該如何使用?

在很多時候,memcached都被濫用了,這就免不了太多的人對他產生抱怨。我經常在論壇上看見有人發貼,類似於“如何提高效率”,回復是“使用memcached”,至於怎麼用?用在哪裡?用來干什麼?等詳細點的回答一句也沒有。在這裡作者要闡明一個觀點就是:memcached不是萬能的,它並不是適用在所有場合。

Memcached是“分布式”的內存對象緩存系統,那麼就是說,那些不需要“分布”的,不需要共享的,或者干脆規模小到只有一台服務器的應用,memcached不會帶來任何好處,相反還會拖慢系統效率,因為網絡連接同樣需要資源,即使是UNIX本地連接也一樣。

在我之前的測試數據中顯示,memcached本地讀寫速度要比直接PHP內存數組慢幾十倍,而APC、共享內存方式都和直接數組差不多。可見,如果只是本地級緩存,使用memcached是非常不劃算的。

Memcached在很多時候都是作為數據庫前端cache使用的。因為它比數據庫少了很多SQL解析、磁盤操作等開銷,而且它是使用內存來管理數據的,所以它可以提供比直接讀取數據庫更好的性能,在大型系統中,訪問同樣的數據是很頻繁的,memcached可以大大降低數據庫壓力,使系統執行效率提升。另外,memcached也經常作為服務器之間數據共享的存儲媒介,例如在SSO系統中保存系統單點登陸狀態的數據就可以保存在memcached中,被多個應用共享。

需要注意的是,memcached使用內存管理數據,所以它是易失的,當服務器重啟,或者memcached進程中止,數據便會丟失,所以memcached不能用來持久保存數據。很多人的錯誤理解,memcached的性能非常好,好到了內存和硬盤的對比程度,其實memcached使用內存並不會得到成百上千的讀寫速度提高,它的實際瓶頸在於網絡連接,它和使用磁盤的數據庫系統相比,好處在於它本身非常“輕”,因為沒有過多的開銷和直接的讀寫方式,它可以輕松應付非常大的數據交換量,所以經常會出現兩條千兆網絡帶寬都滿負荷了,memcached進程本身並不占用多少CPU資源的情況。

您可能感興趣的文章

  • PHP報Fatal error Allowed memory size of...內存不足的錯誤應該如何解決
  • windows下memcache的安裝與配置教程
  • body 是什麼意思">css中 html > body 是什麼意思
  • php計算當前是一年或一月中第幾周的函數
  • MySQL replace函數替換字符串語句的用法
  • 關於使用in_array() foreach array_search() 查找數組是否包含時的性能對比
  • Mysql 數據庫緩存cache功能分析,調試以及性能總結
  • PHP 字符串轉義函數(addslashes,stripslashes)詳解

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved