首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 相關知識

Memcached 安裝與運作原理完整指南:從原始碼編譯到分散式部署

     編輯:PHP 相關知識

前言

Memcached 是高效能、分散式的記憶體物件快取系統,廣泛用於加速動態 Web 應用。本文詳細記錄 Linux 環境下從原始碼編譯安裝 libevent 與 Memcached、啟動守護程序參數說明,以及核心運作原理(Client-Server 架構、Key-Value 儲存、LRU 淘汰機制)。

一、安裝前置需求:libevent

Memcached 依賴 libevent 處理非同步網路事件。建議安裝穩定版:

wget https://github.com/libevent/libevent/releases/download/release-2.1.12-stable/libevent-2.1.12-stable.tar.gz
tar -xzf libevent-2.1.12-stable.tar.gz
cd libevent-2.1.12-stable
./configure --prefix=/usr/local/libevent
make && make install

二、Memcached 編譯安裝

wget https://memcached.org/latest -O memcached-latest.tar.gz
tar -xzf memcached-latest.tar.gz
cd memcached-1.x.x
./configure --prefix=/usr/local/memcached --with-libevent=/usr/local/libevent
make && make install

安裝完成後執行檔位於 /usr/local/memcached/bin/memcached。

三、啟動守護程序參數詳解

/usr/local/memcached/bin/memcached -d -m 128 -l 192.168.1.1 -p 11211 -u www-data
參數說明建議值
-d以守護程序模式背景執行必加
-m最大記憶體用量 (MB)視實體記憶體而定,如 512/1024
-l監聽 IP 位址內網 IP 或 0.0.0.0(所有介面)
-p監聽埠號預設 11211
-u執行使用者(root 啟動時必須指定)www-data / nginx / nobody
-c最大同時連線數預設 1024,高併發可調大
-t執行緒數CPU 核心數
-PPID 檔路徑/var/run/memcached.pid

四、核心運作原理

1. Client-Server 架構

  • Memcached Server 以守護程序常駐記憶體,監聽 TCP/UDP 埠。
  • Client(PHP、Python、Java 等)透過 Socket 連線,發送文字協定指令(set/get/delete/stats)。
  • 無中央協調器,Client 端演算法(Consistent Hashing/Ketama)決定資料分佈於哪台 Server。

2. Key-Value 記憶體儲存

  • 所有資料存放於實體記憶體,非磁碟,故極快(微秒級存取)。
  • Value 最大 1 MB(可重新編譯調整),支援任意二進位資料。
  • Key 長度上限 250 字元,建議使用可列印字元。

3. LRU (Least Recently Used) 淘汰機制

  • 記憶體用盡時,優先淘汰最久未被存取的項目。
  • 每個 Slab Class 獨立 LRU,避免大物件擠佔小物件空間。
  • 可設定 -M 參數禁止自動淘汰(記憶體滿時回傳錯誤)。

4. 非持久化特性

重啟即遺失所有資料。Memcached 定位為「快取層」,非資料庫。架構設計時務必確保資料來源可重建(如從 DB 讀取)。

五、多台 Server 叢集部署

  1. 每台伺服器獨立啟動 memcached,配置相同 -m、-p。
  2. Client 端配置 Server List:['10.0.0.1:11211', '10.0.0.2:11211', '10.0.0.3:11211']。
  3. Client 使用一致性雜湊分發 Key,單台故障只影響該台資料,其餘繼續服務。

六、監控與維運指令

關鍵指標:get_hits/get_misses(命中率)、bytes/limit_maxbytes(記憶體使用率)、evictions(淘汰次數)。

七、總結

Memcached 以簡單協定、純記憶體儲存、Client 端分散式演算法,提供極致讀寫效能。安裝需注意 libevent 依賴與使用者權限;運維核心在於監控命中率與淘汰率,合理規劃記憶體大小與過期策略。記住:它是快取,不是儲存,資料遺失須可接受且可重建。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved