第一次听说memcached应该是我大三的时候吧,那时很傻很天真,听说网站用了memcached缓存后速度就会很快,具体为什么快,怎么快,就不得而知了。如今再看memcached,已经毫无当年的新鲜感。如果,让我选择,我宁愿选择新兴的redis。
一:安装memcached1 安装前的准备工作,解决依赖关系啊
tar zxf libevent-1.4.13-stable.tar.gzcd libevent-1.4.13-stable./configuremake && make install
2.安装memcached
tar zxf memcached-1.4.5.tar.gzcd memcached-1.4.5./configure --prefix=/usr/local/memcachedmake && make install有时会提示找不到libevent库文件,解决办法是把/usr/local/lib加入到/etc/ld.so.conf中,过程如下:echo /usr/local/lib >> /etc/ld.so.confldconfig
二:配置memcached1 相信我,真的没啥配置的,直接加参数启动memcached
/usr/local/memcached/bin/memcached -d -m 20 -u root -l 127.0.0.1 -p 11211
2 参数简单介绍
-p 设置端口号(默认不设置为: 11211) -u udp监听端口 (默认: 11211, 0 时关闭) -l 绑定地址 (默认:所有都允许,无论内外网或者本机更换ip,有安全隐患,若设置为127.0.0.1就只能本机访问) -d 独立进程运行-u 绑定使用指定用于运行进程 -m 允许最大内存用量,单位m (默认: 64 mb) -p 将pid写入文件,这样可以使得后边进行快速进程终止, 需要与 -d 一起使用
3 注意,这是个坑.
memcached slab中item的大小默认是1m,也就是缓存的对象不能超过1m;可以使用-i参数修改,例如修改为4m/usr/local/memcached/bin/memcached -d -i 4m -m 20 -u root -l 127.0.0.1 -p 11211当然了,他肯定会提示你这样做是不好的,内存得不到最大利用(具体看下memcached的介绍)warning: setting item max size above 1mb is not recommended! raising this limit increases the minimum memory requirements and will decrease your memory efficiency.
三:使用memcached1 作为一个运维,不知道开发是怎么使用memcached,有些说不过去吧...
请先安装php下memcached客户端,上篇博客安装lnmp时已经安装过了,具体安装参考(http://pecl.php.net/package/memcache)
connect('localhost','11211'); //准备sql语句 $sql=select * from yunbbs_users limit 1; //设置一个键名 $key=md5($sql); $data=$mem->get($key); //第二次之后的查询 if(!$data){ try{ //连接mysql服务器 $link=mysql_connect('localhost','root','mumayi') or die(could not connect: .mysql_error()); //选择数据库 mysql_select_db(yunbbs) or die(could not select databases); //使用mysql_query()函数执行sql语句 $result=mysql_query($sql,$link) or die(query failed:.mysql_error()); //就一条记录,直接一个数组就取出来了,不用while循环去取了 $data=mysql_fetch_array($result); //把数据存储到memcache中(第一次查询) $mem->add($key,$data); //释放$result变量 mysql_free_result($result); //释放数据库连接池 mysql_close($link); } catch(exception $e){ echo error; } } $mem->close(); print_r($data);?>执行下试试,看下输出结果对不(必须没问题呀):[root@printserver code_segment]# /usr/local/php_fpm/bin/php php_memcached.php array( [0] => 1 [id] => 1 [1] => budong [name] => budong [2] => 99 [flag] => 99 [3] => 0 [avatar] => 0 [4] => 310a78f8774f512015a5079588ad7a02 [password] => 310a78f8774f512015a5079588ad7a02 [5] => [email] => [6] => [url] => [7] => 2 [articles] => 2 [8] => 4 [replies] => 4 [9] => 1369230177 [regtime] => 1369230177 [10] => 1372822269 [lastposttime] => 1372822269 [11] => 1375365466 [lastreplytime] => 1375365466 [12] => [about] => [13] => [notic] => )
2 作为一个运维,你偶尔也需要看下memcached的运行状态吧
请先从11211端口telnet进去,再输入stats看下memcached的详细信息telnet 127.0.0.1 11211stats部分结果如下:[root@printserver ~]# telnet 127.0.0.1 11211trying 127.0.0.1...connected to printserver (127.0.0.1).escape character is '^]'.statsstat pid 18340stat uptime 3853stat time 1384702689stat version 1.4.5stat pointer_size 64...
四:是时候结束了自言自语:
上篇博客,现在还是马马虎虎来了个未完待续,新篇又是这样草草结束,感觉有些对不起自己。忙碌不应该是自己的借口,得逼自己一下了,连写篇博客都这么难,以后还能做什么呢?
参考资料:
memcached 官网:http://memcached.org/
memcached 最佳实践方案:http://sunbean.blog.51cto.com/972509/786174
原文地址:centos 5.9下安装配置memcached, 感谢原作者分享。
