某山寨

z4zr的待调教小窝

[搬运]memcached安装,果断备份一份

[搬运]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 监听的TCP端口 (缺省: 11211)
-d 以守护进程方式运行Memcached
-u 运行Memcached的账户,非root用户
-m 最大的内存使用, 单位是MB,缺省是 64 MB
-c 软连接数量, 缺省是 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端口机器上


以上内容搬运FROM yuban'mei


Warning: file_get_contents(http://api.hitokoto.us/rand): failed to open stream: Connection timed out in /data/htdocs/z4zr.host.smartgslb.com/usr/themes/Wcat/functions.php on line 87

文章二维码