memcache、redis

memcache介紹與安裝
memcache是一個開源分佈式的內存對象緩存系統(另外一個相似功能的軟件叫redis).通常放在web程序與數據庫,幫助緩存程序取數據庫的數據。
client
|
    正向代理(靜態)
因特網
|
squid或varnish(靜態)
|
nginx
php-factcgi(opcache作php代碼緩存)
|
memcache或redis
|
mysql(query_cache)
筆記目錄/program/lnmp_soft/
libevent-1.4.11-stable.tar.gz ----memcache的事件驅動庫
memcached-1.4.22.tar.gz ----memcache主程序包(memcache官網下載)
memcache-2.2.7.tgz --php的memcache擴展包(php官網下載)
上面三個軟件包,第三個在安裝php第三方擴展模塊時就已經安裝並支持了,因此下面繼續安裝另兩個軟件包
# tar xf libevent-1.4.11-stable.tar.gz -C /usr/src/lnmp
# cd /usr/src/lnmp/libevent-1.4.11-stable/
# ./configure ;make ;make install
# tar xf memcached-1.4.22.tar.gz -C /usr/src/lnmp
# cd /usr/src/lnmp/memcached-1.4.22/
# ./configure --with-libevent=/usr/local/
# ;make ;make install
# /usr/local/bin/memcached -d -m 100 -u root --啓動memcached守護進程,-d表示啓動daemon,-m 100表示分配100MB內存給memcached作緩存,-u root指定以root用戶來跑這個daemon
關閉方法(kill -TERM PID)
# lsof -i:11211 ----默認端口爲11211
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
memcached 28795 root 26u IPv4 268755 0t0 TCP *:memcache (LISTEN)
memcached 28795 root 27u IPv6 268756 0t0 TCP *:memcache (LISTEN)
memcached 28795 root 28u IPv4 268759 0t0 UDP *:memcache
memcached 28795 root 29u IPv4 268759 0t0 UDP *:memcache
memcached 28795 root 30u IPv4 268759 0t0 UDP *:memcache
memcached 28795 root 31u IPv4 268759 0t0 UDP *:memcache
memcached 28795 root 32u IPv6 268760 0t0 UDP *:memcache
memcached 28795 root 33u IPv6 268760 0t0 UDP *:memcache
memcached 28795 root 34u IPv6 268760 0t0 UDP *:memcache
memcached 28795 root 35u IPv6 268760 0t0 UDP *:memcache
測試:作完上面的步驟,其實你的工做基本就完成了,只須要告訴php開發人員,你的memcache的端口和IP,他們就能夠寫程序鏈接了
# vim /lnmp/web/memcachetest.php --在家目錄下作一個測試頁面,使用firefox訪問這個頁面,若是能顯示This is a test!,則表示成功
<?php
$mem = new Memcache;
$mem->connect("127.0.0.1", 11211);
$mem->set('key', 'This is a memcache test!', 0, 60);
$val = $mem->get('key');
echo $val;
?>
測試memcache方法一
(開memcache顯示,關閉memcache不能顯示)
# vim /usr/local/php/etc/php.ini
;extension = "memcache.so" --前面加;符號註釋來模擬關閉
# pkill fpm
# /usr/local/php/sbin/php-fpm -D -y /usr/local/php/etc/php-fpm.conf
--再使用這兩句把php的fastcgi重啓,使之生效
測試memcache方法二
關閉memcache的11211,上面的This is a test!就沒法顯示.打開就OK
-----------------
上面是安裝完memcached後,可讓開發人員使用。
若是是象discuz這種開源論壇安裝完後,我沒有開發能力,如何讓discuz使用memcache?
使用安裝時的admin用戶和密碼登錄後臺 http://10.1.1.9:8000/admin.php
點全局--》性能優化--》內存優化
能夠看到memcache是支持,可是關閉的
把關閉狀態改爲打開的方法爲:
# vim /lnmp/web/config/config_global.php
25 $_config['memory']['memcache']['server'] = '127.0.0.1'; --把這個IP127.0.0.1配上(若是memcache在另外一臺機器上,就寫它的IP)
保存後,再刷新後臺的內存優化界面狀態就變爲打開了
################################################################################
把memcache換成redis
web
|
redis
|
mysql
筆記目錄/program/lnmp_soft/
phpredis-2.2.7.tar.gz ----php鏈接redis的擴展包
redis-3.0.7.tar.gz ----redis主程序包
第一大步:讓php支持redis擴展
# tar xf phpredis-2.2.7.tar.gz -C /usr/src/lnmp/
# cd /usr/src/lnmp/phpredis-2.2.7/
# /usr/local/php/bin/phpize
# ./configure --with-php-config=/usr/local/php/bin/php-config
# make ;make install
# ls /usr/local/php/lib/php/extensions/no-debug-non-zts-20131226/ ----這裏就會多了redis.so
imagick.so memcache.so opcache.a opcache.so redis.so
# vim /usr/local/php/etc/php.ini --加上redis.so的支持
extension = "redis.so"
# pkill fpm
# /usr/local/php/sbin/php-fpm -D -y /usr/local/php/etc/php-fpm.conf ----重啓fpm
# /usr/local/php/bin/php -m |grep redis --能夠看到redis,表示已經支持
redis
第二大步:
安裝redis主程序包,並啓動redis服務
# tar xf redis-3.0.7.tar.gz -C /usr/src/lnmp/
# cd /usr/src/lnmp/redis-3.0.7/
# make
# make install
# cp /usr/src/lnmp/redis-3.0.7/redis.conf /etc/ --拷貝配置文件模版
# vim /etc/redis.conf
daemonize yes --改成yes,表示運行成daemon模式
# redis-server /etc/redis.conf ----啓動redis
# lsof -i:6379 --端口爲6379
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
redis-ser 21373 root 4u IPv6 175620 0t0 TCP *:6379 (LISTEN)
redis-ser 21373 root 5u IPv4 175622 0t0 TCP *:6379 (LISTEN)
第三大步:
使用安裝時的admin用戶和密碼登錄後臺 http://10.1.1.9:8000/admin.php
點全局--》性能優化--》內存優化
能夠看到redis是支持,可是關閉的
把關閉狀態改爲打開的方法爲:
# vim /lnmp/web/config/config_global.php
19 $_config['memory']['redis']['server'] = '127.0.0.1';
再回到web去刷新,就能夠看到redis是支持而且打開狀態了
=============================================================
補充三:
把單機lnmp分離成多機
你能夠把nginx,php,memcache或redis,mysql分紅四臺服務器均可以
跟單機lnmp的區別在於:
1,php的編譯若是用下面的參數,那麼編譯沒什麼區別,遠程同樣可讓php支持mysql
--with-mysql=mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd
2,在安裝論壇時,mysql受權時要寫php的IP
# grant all on discuz.* to 'discuzuser'@'PHP服務器IP' identified by '123';
# flush privileges;
3,在安裝論壇的web頁面,寫mysql在哪裏,要寫mysql的IP加端口,而不是localhost
client
nginx
php(fastcgi) opcache
memcache或redis
mysql
nginx_proxy(反向代理)
squid或varnish squid或varnish
nginx_web nginx_web
php(fastcgi) php(fastcgi)
memcache或redis memcache或redis
mysql主 mysql從1 mysql從2
寫 讀 讀
相關文章
相關標籤/搜索