Memcache是danga.com的一个项目,用这个缓存项目来构建本身大负载的网站,来分担数据库的压力。php
它能够应对任意多个链接,使用非阻塞的网络IO。因为它的工做机制是在内存中开辟一块空间,而后创建一个HashTable,Memcached自管理这些HashTable。mysql
为何会有Memcache和memcached两种名称?web
这么理解吧,你知道mysql吧,mysql就是服务器,可是php没有mysql扩展是连不上,redis
memcached用来进行内存缓存,php要链接须要添加memcache扩展,这下理解了吧。sql
下面是配置方法:数据库
1)安装memcached前须要先安装libevent 缓存
[root@aliyun tools]# tar -zxf libevent-1.4.13-stable.tar.gz [root@aliyun tools]# cd libevent-1.4.13-stable [root@aliyun libevent-1.4.13-stable]# ./configure [root@aliyun libevent-1.4.13-stable]# make && make install
2) 安装memcahced服务 服务器
tar -zxf memcached-1.4.13.tar.gz cd memcached-1.4.13 ./configure make && make install
3)启动服务cookie
[root@weiwei memcached-1.4.13]# memcached -m 16m -p 11211 -d -u root -c 8192 给多少内存要本身算,根据需求 还能够同时起几个 [root@weiwei memcached-1.4.13]# memcached -m 16m -p 11212 -d -u root -c 8192 [root@weiwei memcached-1.4.13]# memcached -m 16m -p 11213 -d -u root -c 8192
4)存数据取数据网络
操做memcached命令的语法: set key 0 0 10 <command name> <key> <flags><exptime><bytes>\r\n 过时时间
#存储 [root@weiwei ~]# printf "set key008 0 0 10\r\noldboy0987\r\n" | nc 127.0.0.1 11211 STORED #查询 [root@weiwei ~]# printf "get key008\r\n"|nc 127.0.0.1 11211 VALUE key008 0 10 oldboy0987 END #删除 [root@weiwei ~]# printf "delete key008\r\n"|nc 127.0.0.1 11211 DELETED 也能够telnet登陆,,而后操做,可是不是很建议,不方便
5)安装memecache客户端
ar -zxf memcache-2.2.5.tgz cd memcache-2.2.5 /application/php/bin/phpize ./configure --with-php-config=/application/php/bin/php-config --enable-memcache --with-zlib-dir echo $? make && make install ll /application/php5.3.27/lib/php/extensions/no-debug-non-zts-20090626/ total 244 -rwxr-xr-x. 1 root root 246624 Sep 25 20:09 memcache.so
6)由于配置客户端因此要配置php.ini文件
改成以下: winodows的不要改 extension_dir = "/application/php5.3.27/lib/php/extensions/no-debug-non-zts-20090626/" 并添加一行 extension=memcache.so
7)而后重启php,查看是否生效
pkill php-fpm /application/php/sbin/php-fpm phpinfo();查看有没有相应的模块 用php脚本的方式查看 <?php $memcache = new Memcache; //建立一个memcache对象 $memcache->connect('127.0.0.1', 11211) or die ("Could not connect"); //链接Memcached服务器 $memcache->set('key001', 'oldboy001'); //设置一个变量到内存中,名称是key001值是oldboy001 $memcache->set('key002', 'oldboy002'); //设置一个变量到内存中,名称是key002值是oldboy002 $get_value01 = $memcache->get('key001'); //从内存中取出key001的值 $get_value02 = $memcache->get('key002'); //从内存中取出key002的值 echo $get_value02."<br>"; echo $get_value01; ?> 结果: oldboy002 oldboy001
8)memcached如何实现集群中的session共享存储
在php.ini文件中修改,全部的web服务器都改这两个地方就能够共享存储session了,每一个WEB服务安装个客户端就好,而后去吧 1)session.save_handler = memcache 2)session.save_path = "tcp://192.168.222.128:11211" 优势: 1)memcached是内存缓存,在读写速度上会比普通files时快不少。 2)能够解决多个服务器共用session的难题。 缺点: 1)session数据都保存在memory中,持久化方面有所欠缺,但对session数据来讲不是问题。 2)也能够用其余的持久化系统存储sessions,例如:redis,ttserver。 3)高性能高并发场景,cookies的效率比session要好不少,所以,不少大网站都会用cookies解决会话共享问题
9)memcached状态查看
stat settings能够查看一些memcached设置 例如 线程数 stats slabs 查看slabs相关状况 stats items 查看Items相关状况 stats sizes查看存在的Item个数和大小 stats cachedump 查看key value stats reset 清理统计数据