聽師姐分享新浪微博大量採用 Memcached 的架構後,決定親自體驗這款高效能分散式記憶體快取系統的威力。本文記錄從源碼編譯安裝到效能實測的完整過程。
Memcached 依賴 libevent 處理網路併發,兩者皆需源碼編譯:
# 安裝 libevent
tar -zxvf libevent-2.0.16-stable.tar.gz -C /opt/
cd /opt/libevent-2.0.16-stable
./configure --prefix=/usr/local/libevent
make && make install
# 安裝 Memcached
tar -zxvf memcached-1.4.10.tar.gz -C /opt/
cd /opt/memcached-1.4.10
./configure --prefix=/usr/local/memcached
make && make install
啟動命令關鍵參數說明:
/usr/local/memcached/bin/memcached -d -m 64 -u root -l 10.5.110.234 -p 11212 -c 256 -P /tmp/memcached.pid
-d:守護進程模式-m 64:分配 64MB 記憶體-l / -p:綁定 IP 與埠(客戶端連線需一致)-c 256:最大併發連線數透過 ps aux | grep memcached 與 netstat -ntl 確認進程與埠(11212)均正常監聽。
使用師姐提供的測試程式,對比「有無 Memcached」下的查詢耗時:
| 場景 | 首次寫入/更新 DB (ms) | 後續讀取緩存 (ms) |
|---|---|---|
| 啟用 Memcached | 93 | 15 |
| 關閉 Memcached (直連 DB) | 1193 | 906 |
結果顯示:緩存讀取速度約為直連資料庫的 60 倍。更有趣的是,寫入速度也顯著提升(93ms vs 1193ms),推測是緩存層吸收了部分寫入壓力或減少了資料庫鎖競爭,具體機制有待深入分析。
此實驗直觀證明:Memcached 能以極低成本大幅降低資料庫負載、提升響應速度,是高併發架構的核心組件。