memcached安装使用手记
时间:2010-05-26 来源:xhq6632
因为业务需要,要对数据库查询记录进行缓存,当然除了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端口机器上
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端口机器上
相关阅读 更多 +