memcache是高性能,分佈式的內存對象緩存系統,用於在動態應用中減小數據庫負載,提高訪問速度。目前用memcache解決互聯網上的大用戶讀取是很是流行的一種用法。php
前提要先安裝libevent軟件官方(http://monkey.org/~provos/libevent/)web
其次安裝memcache官方(http://memcached.org/)數據庫
memcached服務端安裝緩存
tar zvxf memcached-1.4.5.tar.gz
cd memcached-1.4.5
./configure --with-libevent=/usr/local/lib
make && make install
默認安裝,若是libevent指定--prefix安裝到其它路麼,那麼這裏相應路徑也需更改.
啓動:/usr/local/bin/memcached -d -m 512 -p 11211 -u root服務器
1.yum -y install libevent,yum源不能用的下載tar包編譯安裝。session
2.動態添加php擴展memcache。併發
tar zxvf memcache-3.0.2.tgz
cd memcache-3.0.2
/usr/local/webserver/php-5.2.4/bin/phpize
./configure --with-php-config=/usr/local/webserver/php-5.2.4/bin/php-config --with-zlib-dir=/usr/local/zlib --enable-memcache ###zlib是一個很好的壓縮解壓縮庫
make && make install
開啓php的配置文件中memcache的模塊。
sed -i 's#extension_dir = "./"#extension_dir = "/usr/local/webserver/php-5.2.4/lib/php/extensions/no-debug-non-zts-20060613/"\n\nextension = "memcache.so"\n#' /usr/local/webserver/php-5.2.4/lib/php.ini
sed -i 's#expose_php = On#expose_php = Off#' /usr/local/webserver/php-5.2.4/lib/php.ini
sed -i 's#session.name = PHPSESSID#session.name = CWSSESSID#' /usr/local/webserver/php-5.2.4/lib/php.ini
3.製做啓動腳本分佈式
#! /bin/sh
. /etc/rc.d/init.d/functions
PORT=11211
USER=root
MAXCONN=1024
CACHESIZE=64
OPTIONS=""
if [ -f /etc/sysconfig/memcached ];then
. /etc/sysconfig/memcached
fi
# Check that networking is up.
if [ "$NETWORKING" = "no" ]
then
exit 0
fi
RETVAL=0
start () {
echo "Starting memcached ..."
# insure that /var/run/memcached has proper permissions
chown $USER /usr/local/memcached/bin/memcached
/usr/local/memcached/bin/memcached -d -p $PORT -u $USER -m $CACHESIZE -c $MAXCONN -P /var/run/memcached.pid $OPTIONS
RETVAL=$?
echo
[ $RETVAL -eq 0 ] && touch /var/lock/subsys/memcached
}
stop () {
echo "Stopping memcached ..."
killproc memcached
RETVAL=$?
echo
if [ $RETVAL -eq 0 ] ; then
rm -f /var/lock/subsys/memcached
rm -f /var/run/memcached.pid
fi
}
restart () {
stop
start
}
# See how we were called.
case "$1" in
start)
start
;;
stop)
stop
;;
status)
status memcached
;;
restart|reload)
restart
;;
condrestart)
[ -f /var/lock/subsys/memcached ] && restart || :
;;
*)
echo $"Usage: $0 {start|stop|status|restart|reload|condrestart}"
exit 1
esac
exit $?
4.telnet 127.0.0.1 11211鏈接
輸入stats可查看實例的當前統計數據。
stats
STAT pid 2722 進程ID
STAT uptime 1307349 服務器運行秒數
STAT time 1500356291 服務器當前unix時間戳
STAT version 1.2.4 版本
STAT pointer_size 64 操做系統字大小(這臺服務器是64位的)
STAT rusage_user 0.100984 進程累計用戶時間
STAT rusage_system 0.442932 進程累計系統時間
STAT curr_items 148 item個數
STAT total_items 320 item總數
STAT bytes 8536782 存儲item字節數
STAT curr_connections 1 當前打開鏈接數
STAT total_connections 1840 曾打開的鏈接總數
STAT connection_structures 4 服務器分配的鏈接結構數
STAT cmd_get 3192 執行get命令總數
STAT cmd_set 320 執行set命令總數
STAT get_hits 2998 get命中次數
STAT get_misses 194 get未命中次數
STAT evictions 0 爲獲取空間刪除item的總數
STAT bytes_read 8839037 讀取字節總數
STAT bytes_written 93695180 寫入字節總數
STAT limit_maxbytes 134217728 分配的內存數(字節)
STAT threads 4 線程數
可修改memcache默認參數
PORT="11211"
USER="nobody"
MAXCONN="1024"
CACHESIZE="128" #根據服務器內存調整
OPTIONS=""
5.memcached參數詳解
-d選項是啓動一個守護進程,
-m是分配給Memcache使用的內存數量,單位是MB,這裏是200MB
-u是運行Memcache的用戶,若是當前爲 root 的話,須要使用此參數指定用戶。
-l是監聽的服務器IP地址,若是有多個地址的話,我這裏指定了服務器的IP地址192.168.1.91
-p是設置Memcache監聽的端口,我這裏設置了12301,最好是1024以上的端口
-c選項是最大運行的併發鏈接數,默認是1024,這裏設置了256
-P是設置保存Memcache的pid文件,我這裏是保存在 /tmp/memcached.pid
6.兩種方法清空memcache緩存
(1).telnet localhost 11211
flush_all
(2).重啓服務。