memcache 介紹與安裝

memcache 介紹

Memcached 是 danga.com(運營 LiveJournal 的技術團隊)開發的一套分佈式內
存對象緩存系統,用於在動態系統中減少數據庫負載,提升性能。

Memcached 是什麼

很多人把 memcached 當作和 SharedMemory 那種形式的存儲載體來使用,雖然
memcached 使用了同樣的“Key=>Value”方式組織數據,但是它和共享內存、
APC 等本地緩存有非常大的區別。Memcached 是分佈式的,也就是說它不是本
地的。它基於網絡連接(當然它也可以使用 localhost)方式完成服務,本身它
是一個獨立於應用的程序或守護進程(Daemon 方式)。

Memcached 在很多時候都是作為數據庫前端 cache 使用的。因為它比數據庫少
了很多 SQL 解析、磁盤操作等開銷,而且它是使用內存來管理數據的,所以它
可以提供比直接讀取數據庫更好的性能,在大型系統中,訪問同樣的數據是很
頻繁的,memcached 可以大大降低數據庫壓力,使系統執行效率提升。

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

memcached 安裝(服務端)

1. 安裝 memcached

sudo apt-get install memcached libmemcached-tools
sudo apt-get install php5-memcached
sudo apt-get install php5-dev php-pear make

2. 更改 memcached.conf

如果我們可以給 Memcached 更多記憶體 , 將會增加效能 系統預設是 64MB

nano /etc/memcached.conf

  • -m 64 是記憶體

  • -l 127.0.0.1 必須更改成自己的 ip 使別人能連線

完成設定後重新啟動 memcached

sudo /etc/init.d/memcached restart

service memcached restart

netstat 觀看 memcached 是不是在執行

sudo netstat -tap | grep memcached

memcache 安裝(客戶端)

1. 安裝 memcache

sudo apt-get install php5-memcached
sudo pecl install channel://pecl.php.net/memcache-3.0.6

2. 編輯 php.ini

nano /etc/php5/apache2/php.ini
##在最下面給上
extension="memcache.so"
memcache.hash_strategy="consistent"

重新啟動 apache2

service apache2 restart

3. 在 drupal 安裝 memcache

移動到 drupal 安裝路徑 安裝 memcache 模組

drush dl memcache

安裝完成以後 利用文字編輯器 編輯 sites/default/settings.php 設定檔
在 settings.php 裡新增以下幾行

$conf['cache_backends'][] = 'sites/all/modules/memcache/memcache.inc';
$conf['cache_default_class'] = 'MemCacheDrupal';
$conf['memcache_key_prefix'] = 'something_unique';
$conf['memcache_servers']
= array(
'HOST(服務端 ip):PORT(服務端的預設 11211port)' => 'default',
);
##如果要多站點使用要在 settings.php 內加入
$conf['memcache_key_prefix'] = 'unique_key';

下載 libraries
https://www.drupal.org/project/memcache 內下載 libraries
下載在到 drupal 內的 libraries
並且改名 memcache memcached

4.Drupal模組啟用與管理模組使用

drush en memcache -y

下載管理模組 memcache_status

drush dl memcache_status

更改 libraries 的 memcache
memcache.php 改名 memcache.php.inc
找到並註解 memcache.php.inc 裡面的

$MEMCACHE_SERVERS[] = 'mymemcache-server1:11211'; // add more as an array
$MEMCACHE_SERVERS[] = 'mymemcache-server2:11211'; // add more as an array

開啟模組

drush en memcache_status -y

測試

測試機資料


只安裝 nginx+drupal 原始數據

安裝 nginx+drupal+memcached