Centos安装Memcache

官方

Memcache是一个高性能的分布式的内存对象缓存系统,通过在内存里维护一个统一的巨大的hash表,它能够用来存储各种格式的数据.简单的说就是将数据调用到内存中,然后从内存中读取,从而大大提高读取速度。

+个人理解

1.它是基于C语言的Libevent库进行开发的
2.Memcache是一款C/S软件,这款软件是维护内存的.
3.是将数据在内存中使用,从内存中读取要比从硬盘中读取要快.
4.读取内存会减少对I/O设备的调用,从而加大访问速度.
5.内存是一个高速临时存储信息的硬件,断电后里面的信息将被清除.
6.硬盘是一个低速长期存储信息的硬件,断电后里面的信息将被保留.



守护进程

Memcache Defend(守护)

Memcached是以守护程序方式运行一个或多个服务器中,随时会接收客户端的连接和操作.



Memcache安装


操作系统  : Mac Os X
虚拟机     : VritualBox


1.编译安装Libevent

cd ~

curl -O http://www.monkey.org/~provos/libevent-2.0.13-stable.tar.gz

tar -zxvf libevent-2.0.13-stable.tar.gz

cd libevent-2.0.13-stable-tar.gz

./configure --prefix=/usr

make ; make install


检测一下查看是否安装:

ls -al /usr/lib | grep libevent

#显示

libevent.so -> libevent-2.0.so.5.1.2



2.安装Memcache

cd ~

curl -O http://www.danga.com/memcached/dist/memcached-1.4.0.tar.gz

tar -zxvf memcached-1.4.0.tar.gz

cd memcached-1.4.0.tar.gz

./configure --with-libevent=/usr/

make ; make install


检测是否成功安装

ls -al /usr/local/bin/mem*

#显示
/usr/local/bin/memcached



开启Memcached守护进程

memcached -d -u root

#无提证明开启成功

#连接参数

-p 监听端口

-l 连接的IP地址,默认是本机

-d start启动memecache服务

-d restart重启

-d stop|shutdown关闭服务

-d install 安装

-d uninstall 卸载

-u 以身份运行仅在root下有效

-m 最大内存使用,单位MB,默认64MB,最大2G

-M 内存耗尽时返回错误

-c 最大同时连接数量,默认是1024

-f 块大小增长因为,默认是1.25

-n 最小分配空间,key+value+flags默认48

-h 显示帮助

#使用telnet连接


telnet localhost 11211

#直接按回车会出现客户端错误.



#查看当前状态命令

stats

stats参数参考

STAT pid 22459                             进程ID
STAT uptime 1027046                        服务器运行秒数
STAT time 1273043062                       服务器当前unix时间戳
STAT version 1.4.4                         服务器版本
STAT pointer_size 64                       操作系统字大小(这台服务器是64位的)
STAT rusage_user 0.040000                  进程累计用户时间
STAT rusage_system 0.260000                进程累计系统时间
STAT curr_connections 10                   当前打开连接数
STAT total_connections 82                  曾打开的连接总数
STAT connection_structures 13              服务器分配的连接结构数
STAT cmd_get 54                            执行get命令总数
STAT cmd_set 34                            执行set命令总数
STAT cmd_flush 3                           指向flush_all命令总数
STAT get_hits 9                            get命中次数
STAT get_misses 45                         get未命中次数
STAT delete_misses 5                       delete未命中次数
STAT delete_hits 1                         delete命中次数
STAT incr_misses 0                         incr未命中次数
STAT incr_hits 0                           incr命中次数
STAT decr_misses 0                         decr未命中次数
STAT decr_hits 0                           decr命中次数
STAT cas_misses 0                          cas未命中次数
STAT cas_hits 0                            cas命中次数
STAT cas_badval 0                          使用擦拭次数
STAT auth_cmds 0
STAT auth_errors 0
STAT bytes_read 15785                      读取字节总数
STAT bytes_written 15222                   写入字节总数
STAT limit_maxbytes 1048576                分配的内存数(字节)
STAT accepting_conns 1                     目前接受的链接数
STAT listen_disabled_num 0                 
STAT threads 4                             线程数
STAT conn_yields 0
STAT bytes 0                               存储item字节数
STAT curr_items 0                          item个数
STAT total_items 34                        item总数
STAT evictions 0                           为获取空间删除item的总数


===================================================

4,安装memcache的PHP扩展(下载源码包、编译、安装、配置):

[root@youxia205 opt]# wget http://pecl.php.net/get/memcache-2.2.5.tgz

[root@youxia205 opt]# tar -zxvf memcache-2.2.5.tgz

[root@youxia205 opt]# cd memcache-2.2.5

[root@youxia205 memcache-2.2.5]# /usr/local/php/bin/phpize

Configuring for:

PHP Api Version:         20041225

Zend Module Api No:      20060613

Zend Extension Api No:   220060519

[root@youxia205 memcache-2.2.5]# ./configure --enable-memcache -with-php-config=/usr/local/php/bin/php-config --with-zlib-dir

[root@youxia205 memcache-2.2.5]# make

[root@youxia205 memcache-2.2.5]# make install

Installing shared extensions:     /usr/local/php/lib/php/extensions/no-debug-zts-20060613/

[root@youxia205 memcache-2.2.5]# vi /usr/local/php/etc/php.ini

extension=memcache.so

四,测试memcache:

1,在网站目录下建立一个测试文件,名称为memtest.php,具体如下:

[root@youxia205 ~]# cd  /usr/local/apache2/htdocs

[root@youxia205 htdocs]# vi memtest.php

<?php


$memcachehost = '192.168.0.205';

$memcacheport = 11211;

$memcachelife = 60;

$memcache = new Memcache;

$memcache->connect($memcachehost,$memcacheport) or die ("Could not connect");

$query="select * from personal_info limit 10";

$key=md5($query);

if(!$memcache->get($key))

{

                $conn=mysql_connect("localhost","root","user");

                mysql_select_db(mydb);

                $result=mysql_query($query);

                while ($row=mysql_fetch_assoc($result))

                {

                        $arr[]=$row;

                }

                $f = 'mysql';

                $memcache->add($key,serialize($arr),0,30);        //mysql 查询后,插入 memcached

                $data = $arr ;

}

else{

        $f = 'memcache';

        $data_mem=$memcache->get($key);

        $data = unserialize($data_mem);

}

echo $f;

echo "<br>";

//print_r($data);

foreach($data as $a)

{

                echo "number is <b><font color=#FF0000>$a[pi_id]</font></b>";

                echo "<br>";

                echo "name is <b><font color=#FF0000>$a[pi_name]</font></b>";

                echo "<br>";

                echo "tel is <b><font color=#FF0000>$a[pi_tel]</font></b>";

                echo "<br>";

                echo "qq is <b><font color=#FF0000>$a[pi_qq]</font></b>";

                echo "<br>";

                echo "email is <b><font color=#FF0000>$a[pi_email]</font></b>";

                echo "<br>";

}

?>

2,执行测试:

#执行的时候报错

Fatal error: Class 'Memcache' not found in /usr/local/apache2/htdocs/memtest.php on line 5

#解决方法如下:

[root@youxia205 htdocs]# find / -name memcache.so

/usr/local/php/lib/php/extensions/no-debug-zts-20060613/memcache.so

/opt/memcache-2.2.5/.libs/memcache.so

/opt/memcache-2.2.5/modules/memcache.so

vi /usr/local/php/etc/php.ini

extension_dir = "./"

extension_dir = "/usr/local/php/lib/php/extensions/no-debug-zts-20060613"

再次执行:

查看数据库中正在执行的语句,没有发现对mydb库执行查询的线程,说明PHP直接从memcache中提取的数据:

mysql> show processlist;

+-----+----------+-----------------+-------+---------+------+-------+------------------+

| Id  | User     | Host            | db    | Command | Time | State | Info             |

+-----+----------+-----------------+-------+---------+------+-------+------------------+

| 697 | prog     | localhost:44175      | word | Sleep   |   23 |       | NULL             |

| 698 | prog     | localhost:44176       | word | Sleep   |   23 |       | NULL             |

| 744 | user   | localhost              | mydb  | Sleep   | 3443 |       | NULL             |

| 747 | user   | localhost              | NULL  | Query   |    0 | NULL  | show processlist |

+-----+----------+-----------------+-------+---------+------+-------+------------------+

4 rows in set (0.00 sec)


本篇文章来源于 Linux公社网站  原文链接:http://www.linuxidc.com/Linux/2010-08/28206p4.htm

猜你喜欢

转载自qianxunniao.iteye.com/blog/1279207