memcached是一套分布式的高速缓存系统,由LiveJournal的Brad Fitzpatrick开发,但目前被许多网站使用。这是一套开放源代码软件,以BSD license授权发布。 memcached缺乏认证以及安全管制,这代表应该将memcached服务器放置在防火墙后。 memcached的API使用三十二比特的循环冗余校验(CRC-32)计算键值后,将数据分散在不同的机器上。当表格满了以后,接下来新增的数据会以LRU机制替换掉。由于memcached通常只是当作高速缓存系统使用,所以使用memcached的应用程序在写回较慢的系统时(像是后端的数据库)需要额外的代码更新memcached内的数据。
memcached是一套分布式的高速缓存系统,由LiveJournal的Brad Fitzpatrick开发,但目前被许多网站使用。这是一套开放源代码软件,以BSD license授权发布。
(一) 服务端安装
1. 安装依赖包和软件
[root@iZ255aksz8rZ ~]# rpm -qa memcached nc telnet libevent
[root@iZ255aksz8rZ ~]# yum install memcached nc telnet libevent
[root@iZ255aksz8rZ ~]# ll /usr/bin/memcached
-rwxr-xr-x 1 root root 85256 Nov 12 2010 /usr/bin/memcached
[root@iZ255aksz8rZ ~]# memcached -h 查看帮助文档
2.启动命令:
[root@iZ255aksz8rZ ~]# memcached -m 16m -p 11211 -d -u root -c 8192
-m 16m : 使用多少内存 (default: 64 MB)
-p 11211 : 使用端口号 (多实例修改端口即可)
-d :代表使用deamon模式
-u root :指定运行用户
-c 8192: 最大连接并发数 (default: 1024)
[root@iZ255aksz8rZ ~]# lsof -i:11211
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
memcached 6563 root 26u IPv4 1800491 0t0 TCP *:memcache (LISTEN)
memcached 6563 root 27u IPv4 1800496 0t0 UDP *:memcache
telnet 测试:
[root@iZ255aksz8rZ ~]# telnet 127.0.0.1 11211
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
set k1 0 0 4
ning
STORED
get k1
VALUE k1 0 4
ning
END
replace k1 0 0 6
pengju
STORED
get k1
VALUE k1 0 6
pengju
END
delete k1
DELETED
nc测试:
[root@iZ255aksz8rZ ~]# printf "set k1 0 0 4
ning
" | nc 127.0.0.1 11211
STORED
[root@iZ255aksz8rZ ~]# printf "get k1
" | nc 127.0.0.1 11211
VALUE k1 0 4
ning
END
[root@iZ255aksz8rZ ~]# printf "replace k1 0 0 6
pengju
" | nc 127.0.0.1 11211
STORED
[root@iZ255aksz8rZ ~]# printf "get k1
" | nc 127.0.0.1 11211
VALUE k1 0 6
pengju
END
[root@iZ255aksz8rZ ~]# printf "delete k1
" | nc 127.0.0.1 11211
DELETED
(二) 客户端安装
[root@iZ255aksz8rZ ~]# cd /tools
[root@iZ255aksz8rZ tools]# wget -q http://pecl.php.net/get/memcache-2.2.7.tgz
[root@iZ255aksz8rZ tools]# tar zxf memcache-2.2.7.tgz
[root@iZ255aksz8rZ tools]# cd memcache-2.2.7
[root@iZ255aksz8rZ memcache-2.2.7]# /application/php/bin/phpize
Configuring for:PHP Api Version: 20121113Zend Module Api No: 20121212Zend Extension Api No: 220121212
[root@iZ255aksz8rZ memcache-2.2.7]# ./configure --enable-memcache --with-php-config=/application/php/bin/php-config
[root@iZ255aksz8rZ memcache-2.2.7]# make
[root@iZ255aksz8rZ memcache-2.2.7]# make install
Installing shared extensions: /application/php5.5.32/lib/php/extensions/no-debug-non-zts-20121212/
[root@iZ255aksz8rZ tools]# ls -l /application/php5.5.32/lib/php/extensions/no-debug-non-zts-20121212/
total 252
-rwxr-xr-x 1 root root 258024 Sep 20 21:12 memcache.so
一般情况下memcached需要在安装PHP之后就应该安装,如果已经搭配好环境需要做如下操作:
[root@iZ255aksz8rZ tools]# vim /application/php/lib/php.ini
[root@iZ255aksz8rZ tools]# tail -2 /application/php/lib/php.ini
extension_dir = "/application/php5.5.32/lib/php/extensions/no-debug-non-zts-20121212/"
extension=memcache.so
此操作是为了加到php扩展文件中,重启PHP生效。
[root@iZ255aksz8rZ tools]# pkill php-fpm
[root@iZ255aksz8rZ tools]# /application/php/sbin/php-fpm
[root@iZ255aksz8rZ tools]# lsof -i:9000
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
php-fpm 9347 root 7u IPv4 1803282 0t0 TCP localhost:cslistener (LISTEN)
php-fpm 9348 nginx 0u IPv4 1803282 0t0 TCP localhost:cslistener (LISTEN)
php-fpm 9349 nginx 0u IPv4 1803282 0t0 TCP localhost:cslistener (LISTEN)
<?php
$memcache = memcache_connect('127.0.0.1', 11211) or die ("could not connect Mc server");
$memcache->set('key', 'hello ningpengju');
$get=$memcache->get('key');
echo $get;
?>