memcache 安装教程
2013-10-21 19:49 youxin 阅读(698) 评论(0) 编辑 收藏 举报memcached:官网http://memcached.org/
说明:memcached本身没有Linux版本,网上的windows 版本都是个人开发的。
memcached和memcache区别:
memcache是php的一个扩展,用于php管理memcached,php-memcache.dll。
如果安装了memcached不安装扩展,那么php无法操控memcached,但是命令行使用起来没有问题
如果安装了memcache扩展但是没有安装memcached服务,那么这个就无法使用。
只有同时安装了memcached服务和memcache扩展才可以在PHP中使用memcached提高动态网站性能。
要在網站中使用 memcached,必須要進行兩個分別的步驟。首先在 Windows 下架設 memcached 伺服器 。
很多人都推荐区http://code.jellycan.com/memcached/ 下载,我进入后没看到下载地址,而是在
http://downloads.northscale.com/memcached-win32-1.4.4-14.zip! 下载的。
下載後解壓縮到你要放置的資料夾,然後以命令提示字元模式在該資料夾中下指令:
- memcached.exe -d install
這是將 memcached 安裝成系統服務。接著啟動 memcached 服務:
- memcached.exe -d start
到這裏,只是安裝好「memcached 伺服器」。
(NOTE: 以后memcached将作为windows的一个服务每次开机时自动启动。这样服务器端已经安装完毕了。 )
接著需在 php 中安裝相關檔案並設定,網站才能使用 memcached。首先去下載與你 php 版本相符的 php_memcache.dll,將它放到 php 資料夾下的 \ext 目錄。
你可以在這裏下載到適合你 php 版本 win32 的 php_memcache.dll:
http://windows.php.net/downloads/pecl/releases/memcache/
例如我的 php 版本為 5.5.1,就下載 3.0.8 資料夾下的 php_memcache-3.0.8-5.5-ts-vc11-x86.zip 或 php_memcache-3.0.8-5.5-nts-vc11-x86.zip
(要使用 64 位元版本的話請下載 x64)。
什麼是 ts 與 nts 版本:
TS:Thread Safe 執行緒安全, 執行時會進行執行緒(Thread)安全檢查,以防止有新要求就啟動新執行緒的 CGI 執行方式而耗盡系統資源
NTS:Non Thread Safe 非執行緒安全, 在執行時不進行執行緒(Thread)安全檢查
PHP的兩種執行方式:ISAPI 和 FastCGI。
ISAPI (Internet Server Application Programming Interface) 執行方式是以 DLL 動態函式庫的形式使用,可以在被使用者請求後執行,在處理完一個使用者請求後不會馬上消失,所以需要進行執行緒安全檢查,這樣來提高程式的執行效率,所以如果是以 ISAPI 來執行 PHP,建議選擇 Thread Safe 版本
apache 中的設定方式:
#下面這個是載入 TS 版本的 php 必須的
LoadModule php5_module 「xxx/php5apache2_2.dll」
接著在 php.ini 的最後面加上以下內容:
- [Memcache]
- extension=php_memcache.dll
重新啟動 apache 即可。
註:memcached 伺服器 與網站伺服器 (如 Apache Server) 並不用一定要架在同一台電腦上。如果不同電腦,只需在相關的網站設定中指定 memcached 伺服器所在的 IP 就可以了。
测试是否安装成功:
<?php $memcache = new Memcache; $memcache->connect("localhost",11211); # You might need to set "localhost" to "127.0.0.1" echo "Server's version: " . $memcache->getVersion() . "<br />\n"; $tmp_object = new stdClass; $tmp_object->str_attr = "test"; $tmp_object->int_attr = 123; $memcache->set("key",$tmp_object,false,10); echo "Store data in the cache (data will expire in 10 seconds)<br />\n"; echo "Data from the cache:<br />\n"; var_dump($memcache->get("key")); ?>
没有错误产生,则成功。
我的输出:
Server's version: 1.4.4-14-g9c660c0
Store data in the cache (data will expire in 10 seconds)
Data from the cache:
object(stdClass)#3 (2) { ["str_attr"]=> string(4) "test" ["int_attr"]=> int(123) }
memcache基本设置
-p 监听的端口
-l 连接的IP地址, 默认是本机
-d start 启动memcached服务
-d restart 重起memcached服务
-d stop|shutdown 关闭正在运行的memcached服务
-d install 安装memcached服务
-d uninstall 卸载memcached服务
-u 以的身份运行 (仅在以root运行的时候有效)
-m 最大内存使用,单位MB。默认64MB
-M 内存耗尽时返回错误,而不是删除项
-c 最大同时连接数,默认是1024
-f 块大小增长因子,默认是1.25
-n 最小分配空间,key+value+flags默认是48
-h 显示帮助
参考:http://www.suma.tw/thread-4586-1-1.html
http://zurmo.org/wiki/installing-memcache-on-windows
linux安装:http://kling.blog.51cto.com/3320545/1250953
linux编译安装:
1:检查是否安装Libevent
2.安装:
$wget -c http:
//www
.memcached.org
/files/memcached-1
.4.17.
tar
.gz
$
tar
-zxvf memcached-1.4.17.
tar
.gz
$
cd
memcached-1.4.17
$.
/configure
--prefix=
/usr/local/memcached
$
make
$
sudo
make
install
第三步:启动memcached
1
2
|
$ cd /usr/local/memcached $. /memcached -d -m 1024 -u root -l 127.0.0.1 -p 11211 -P /tmp/memcached .pid |
第三步:检查是否安装成功
1
2
3
|
$ ps -aux | grep memcache #法1 $ netstat -antu | grep 11211 #法2 $telnet localhost 11211 #法3 |
常用命令
启动memcached服务
1
|
#./memcached -d -m 1024 -u root -l 127.0.0.1 -p 11211 -P /tmp/memcached.pid |
关闭memcached服务
1
|
#kill `cat /tmp/memcached.pid` |
#!/bin/bash # author:kuangl # date:2013-05-30 # description: Starts and stops the Memcached services. # pidfile: /tmp/memcached1.pid # config: /usr/local/memcached # chkconfig: - 55 45 # source function library . /etc/rc.d/init.d/functions memcached="/usr/local/memcached/bin/memcached" [ -e $memcached ] || exit 1 start() { echo "Starting memcached:" daemon $memcached -d -m 1000 -u root -l 127.0.0.1 -p 11211 -c 1500 -P /tmp/memcached1.pid } stop() { echo "Shutting down memcached" killproc memcached } case "$1" in start) start ;; stop) stop ;; restart) stop sleep 3 start ;; *) echo $"Usage: $0 {start|stop|restart}" exit 1 esac exit $?
四、将脚本复制到init.d目录下
1
|
[root@jw-test01 scripts] # cp memcached.sh /etc/init.d/memcached |
五、将memcached加入系统启项
1
2
|
[root@jw-test01 scripts] # chkconfig --add memcached [root@jw-test01 scripts] # chkconfig --level 35 memcached on |
六、启动memcached
1
2
3
4
5
|
[root@jw-test01 scripts] # service memcached restart Shutting down memcached [确定] Starting memcached: [确定] [root@jw-test01 scripts] # ps -ef |grep memcached root 27616 1 0 22:18 ? 00:00:00 /usr/local/memcached/bin/memcached -d -m 1000 -u root -l 127.0.0.1 -p 11211 -c 1500 -P /tmp/memcached1 .pid |
七、Memcached常用参数
参数 | 说明 |
-p <num> | 设置端口号(默认不设置为: 11211) |
-U <num> | UDP监听端口(默认: 11211, 0 时关闭) |
-l <ip_addr> | 绑定地址(默认:所有都允许,无论内外网或者本机更换IP,有安全隐患,若设置为127.0.0.1就只能本机访问) |
-d | 独立进程运行 |
-u <username> | 绑定使用指定用于运行进程<username> |
-m <num> | 允许最大内存用量,单位M (默认: 64 MB) |
-P <file> | 将PID写入文件<file>,这样可以使得后边进行快速进程终止, 需要与-d 一起使用 |
参考:
http://kling.blog.51cto.com/3320545/1250953
linux下php memcache安装:
1:去http://pecl.php.net/package/memcache 选择相应想要下载的memcache版本。
2.安装PHP的memcache扩展
tar vxzf memcache-2.2.1.tgz
cd memcache-2.2.1
/usr/local/php/bin/phpize
./configure --enable-memcache --with-php-config=/usr/local/php/bin/php-config --with-zlib-dir
make
make install
3.上述安装完后会有类似这样的提示:
Installing shared extensions: /usr/local/php/lib/php/extensions/no-debug-non-zts-2007xxxx/
4.把php.ini中的extension_dir = "./"修改为
extension_dir = "/usr/local/php/lib/php/extensions/no-debug-non-zts-2007xxxx/"
5.添加一行来载入memcache扩展:extension=memcache.so
ok。
测试下:
<?php $mem=new Memcache; $mem->connect("127.0.0.1",11211) or die("colud not connect"); $mem->set("key","this is a test",0,60); $val=$mem->get('key'); echo $val;
参考:http://www.oschina.net/question/234345_42556