设为首页 收藏本站
查看: 721|回复: 0

[经验分享] memcached安装使用手记

[复制链接]

尚未签到

发表于 2015-9-1 07:44:37 | 显示全部楼层 |阅读模式
因为业务需要,要对数据库查询记录进行缓存,当然除了mysql自身的缓存之外的东西了。
很早以前就研究过,那个memcached,但是一直没有机会实际操作一下。
这下,好了,有机会,亲密接触一下了。
呵呵

如果还不知道这个是做什么用的,先去搜索一下吧。
也可以到官网看看:http://www.danga.com/memcached/

在安装之前,需要几个软件包
libevent
http://monkey.org/~provos/libevent-1.4.9-stable.tar.gz


memcached
http://www.danga.com/memcached/dist/memcached-1.2.6.tar.gz

前两个是必须的,至于第三个,看你了,因为我的要用在PHP客户端访问,所以安装了这个

memcache
http://pecl.php.net/get/memcache-2.2.4.tgz


下面简要说明一下,安装过程吧。

首先安装libevent
tar zxvf libevent-1.4.9-stable.tar.gz
cd libevent-1.4.9-stable
./configure --prefix=/usr
make && make install

然后再安装
tar zxvf memcached-1.2.6.tar.gz
cd memcached-1.2.6
./configure --prefix=/usr/local
make && make install


安装完成之后,就可以直接运行测试一下

可以直接给出程序路径,也可以直接运行(当然你的系统已经加载路径的情况下)
/usr/local/bin/memcached -u wwwrun
我用的WEB系统的默认用户来运行的

不要关闭这个运行的窗口,另外开一个窗口,
执行如下命令:
telnet localhost 11211
注:其中11211是memcached运行的默认端口,当然你也可以用其它端口来运行
出现如下窗口


执行查看状态命令stats,看看当前状态如何。


我这个窗口是运行了一段时间的效果。


查看Memcached帮助信息,可以使用如下命令
/usr/local/bin/memcached -h


选项说明
-p <num> 监听的TCP端口 (缺省: 11211)
-d 以守护进程方式运行Memcached
-u <username> 运行Memcached的账户,非root用户
-m <num> 最大的内存使用, 单位是MB,缺省是 64 MB
-c <num> 软连接数量, 缺省是 1024
-v 输出警告和错误信息
-vv 打印客户端的请求和返回信息
-h 打印帮助信息
-i 打印memcached和libevent的版权信息



刚才那个运行,一旦窗口关闭,程序就关闭了,要想让它运行在后台,可以选择-d选项

来了一个通用运行参数吧

/usr/local/bin/memcached -p 11211 -d -u wwwrun -m 2048 -c 1024 -vvv
我的机器配置比较高是16G内存,所以叫内存不珍贵,用了2G,呵呵

下面再说一下,PHP调用的安装和配置吧

tar zxvf memcache-2.2.4.tgz
cd memcache-2.2.4
/usr/bin/phpize
./configure --with-php-config=/usr/bin/php-config
make && make install
注:这个地方,PHP的安装路径很重要,每个系统的PHP安装位置可能有点变化,不同的安装方式也会不一样
如果你确实不知道安装在哪儿了。
可以去查找一下。
也可以使用whereis php
之类的命令帮助你快速找到它的位置

安装完成之后,要让你的apache认到它,就需要修改php.ini对应的设置
又是不同的环境,配置不一样了。
我的是suse 10.2 系统默认安装位置在
/etc/php5/apache2/php.ini

另外,这个PHP配置跟一般还有点区别,就是,它的配置通常不是直接修改php.ini这个文件
我在/etc/php5/conf.d/目录中发现很多配置文件


就在这个目录下,随便复制了一个文件,将它重命名为memcache.ini
然后,修改了,里面内容为:extension=memcache.so

重新启动apache,
用php -m
发现已经生效了,有这个模块了。

现在可以来体验一下了。



<?php
//连接Memcache
$mem = new Memcache;
$mem->connect("localhost", 11211);
//保存数据
$mem->set('key1', 'This is first value', 0, 60);
$val = $mem->get('key1');
echo "Get key1 value: " . $val ."<br>";
//替换数据
$mem->replace('key1', 'This is replace value', 0, 60);
$val = $mem->get('key1');
echo "Get key1 value: " . $val . "<br>";
//保存数组数据
$arr = array('aaa', 'bbb', 'ccc', 'ddd');
$mem->set('key2', $arr, 0, 60);
$val2 = $mem->get('key2');
echo "Get key2 value: ";
print_r($val2);
echo "<br>";
//删除数据
$mem->delete('key1');
$val = $mem->get('key1');
echo "Get key1 value: " . $val . "<br>";
//清除所有数据
$mem->flush();
$val2 = $mem->get('key2');
echo "Get key2 value: ";
print_r($val2);
echo "<br>";
//关闭连接
$mem->close();
?>

memcached支持分布式的体验

/usr/local/bin/memcached -p 11211 -d -u wwwrun -m 2048 -c 1024 -vvv
/usr/local/bin/memcached -p 11311 -d -u wwwrun -m 2048 -c 1024 -vvv
/usr/local/bin/memcached -p 11411 -d -u wwwrun -m 2048 -c 1024 -vvv

可以同时运行多个哟。

而且有特别算法,自动连接到服务端,客户端不需要特别操作。


<?php
//连接Memcache
$mem = new Memcache;
$mem->addServer("localhost", 11211);
$mem->addServer("localhost", 11311);
$mem->addServer("localhost", 11411);
//保存数据
$mem->set('key1', 'This is first value', 0, 60);
$val = $mem->get('key1');
echo "Get key1 value: " . $val ."<br>";

$mem->set('key2', 'This is first value', 0, 60);
$va2 = $mem->get('key2');
echo "Get key2 value: " . $va2 ."<br>";

//保存数组数据
$arr = array('aaa', 'bbb', 'ccc', 'ddd');
$mem->set('key3', $arr, 0, 60);
$va3 = $mem->get('key3');
echo "Get key3 value: ";
print_r($va3);
echo "<br>";
//删除数据
$mem->delete('key1');
$val = $mem->get('key1');
echo "Get key1 value: " . $val . "<br>";
//关闭连接
$mem->close();
?>

实际上Key1保存在11211端口机器
Key2保存在11311端口机器上
Key3保存在11411端口机器上

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-108089-1-1.html 上篇帖子: 多memcached 和 mysql 主从 环境下PHP开发: 代码详解(转) 下篇帖子: memcached搭建缓存系统
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表