这里承接我上一篇所搭建的LNMP服务器:

Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提供动态、数据库驱动网站的速度,memcached的API使用三十二位元的循环冗余校验(CRC-32)计算键值后,将资料分散在不同的机器上。当表格满了以后,接下来新增的资料会以LRU机制替换掉。由于memcached通常只是当作快取系统使用,所以使用memcached的应用程式在写回较慢的系统时(像是后端的数据库)需要额外的程式码更新memcached内的资料。Memcached是一款开源、高性能、分布式内存对象缓存系统,可应用各种需要缓存的场景,其主要目的是通过降低对Database的访问来加速web应用程序。它是一个基于内存的“键值对”存储,用于存储数据库调用、API调用或页面引用结果的直接数据,如字符串、对象等。

1、启动Memcache 常用参数

-p <num>      设置TCP端口号(默认不设置为: 11211)

-U <num>      UDP监听端口(默认: 11211, 0 时关闭)

-l <ip_addr>  绑定地址(默认:所有都允许,无论内外网或者本机更换IP,有安全隐患,若设置为127.0.0.1就只能本机访问)

-d            以daemon方式运行

-u <username> 绑定使用指定用于运行进程<username>

-m <num>      允许最大内存用量,单位M (默认: 64 MB)

-P <file>     将PID写入文件<file>,这样可以使得后边进行快速进程终止, 需要与-d 一起使用

2、连接

telnet 127.0.0.1 11211

3、基本命令

存储类命令:set, add, replace, append, prepend

获取数据类命令:get, delete, incr/decr

统计类命令:stats, stats items, stats slabs, stats sizes

清理命令: flush_all

command <key> <flags> <expiration time> <bytes> <value>

参数             用法

key            key 用于查找缓存值

flags            可以包括键值对的整型参数,客户机使用它存储关于键值对的额外信息

expiration time    在缓存中保存键值对的时间长度(以秒为单位,0 表示永远)

bytes            在缓存中存储的字节点

value            存储的值(始终位于第二行)

set

  命令用于向缓存添加新的键值对。如果键已经存在,则之前的值将被替换。如果使用 set 命令正确设定了键值对,服务器将使用单词 STORED 进行响应。

add

    仅当缓存中不存在键时,add 命令才会向缓存中添加一个键值对。如果缓存中已经存在键,则之前的值将仍然保持相同,并且您将获得响应 NOT_STORED。

replace

   仅当键已经存在时,replace 命令才会替换缓存中的键。如果缓存中不存在键,那么您将从 memcached 服务器接受到一条 NOT_STORED 响应。

最后两个基本命令是 get 和 delete。

LNMMP的组合其实是PHP和memcached的组合,那它们是怎么样组合使用的呢,接下来就演示一下

前提:

再起一台虚拟主机:

主机地址为 :  172.16.24.100(这个做为memcached服务器,上面只安装memcached)

安装memcached:

[root@contron ~]# yum install memcached

[root@contron ~]# tail /etc/passwd<=====安装完成之后系统会自动生成一个memcached用户

saslauth:x:498:76:"Saslauthd user":/var/empty/saslauth:/sbin/nologin

postfix:x:89:89::/var/spool/postfix:/sbin/nologin

rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologin

nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin

pulse:x:497:496:PulseAudio System Daemon:/var/run/pulse:/sbin/nologin

sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin

tcpdump:x:72:72::/:/sbin/nologin

mysql:x:27:27:MySQL Server:/var/lib/mysql:/bin/bash

nginx:x:496:493::/home/nginx:/bin/bash

memcached:x:495:492:Memcached daemon:/var/run/memcached:/sbin/nologin

[root@contron ~]# memcached -u memcached

[root@contron ~]# service memcached start

[root@contron ~]# ss -tnl<=======查看11211端口是否运行了

State       Recv-Q Send-Q              Local Address:Port                Peer Address:Port

LISTEN      0      128                            :::11211                         :::*    

LISTEN      0      128                             *:11211                         *:*    

LISTEN      0      128                            :::111                           :::*    

LISTEN      0      128                             *:111                            *:*    

下面是memcached的配置文件,一般不用修改

[root@contron ~]# vim /etc/sysconfig/memcached

PORT="11211"      #默认监听的端口

USER="memcached"  #默认以哪个用户身份运行

MAXCONN="1024"    #最大连接数

CACHESIZE="64"    #内存64MB

OPTIONS=""          

安装上telnate连接到memcached上查看一下  

[root@contron ~]# yum install telnet

[root@contron ~]# telnet 127.0.0.1 11211

输入 stats 查看当前的运行状态信息。

下面是在172.16.24.8主机上的操作,php所在的主机

到php的官方站点下载memcached的安装模块

       memcache-2.2.7.tgz

整合php和memcached

1、把所下载到的安装包拷贝到我们安装php服务的主机上

[root@node3 ~]# tar xf memcache-2.2.7.tgz

[root@node3 ~]# cd memcache-2.2.7

[root@node3 memcache-2.2.7]# ls

config9.m4  example.php                 memcache.php        memcache_standard_hash.c

config.m4   memcache.c                  memcache_queue.c    php_memcache.h

config.w32  memcache_consistent_hash.c  memcache_queue.h    README

CREDITS     memcache.dsp                memcache_session.c

[root@node3 memcache-2.2.7]# /usr/local/php/bin/phpize

Configuring for:

PHP Api Version:         20100412

Zend Module Api No:      20100525

Zend Extension Api No:   220100525

[root@node3 memcache-2.2.7]# ./configure --with-php-config=/usr/local/php/bin/php-config --enable-memcache

[root@node3 memcache-2.2.7]# make

[root@node3 memcache-2.2.7]# make install

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

安装完成之后会生成以上信息。

2、编辑/etc/php.ini在“动态模块”相关的位置添加如下一行来载入memcache扩展:

extension=/usr/local/php/lib/php/extensions/no-debug-non-zts-20100525/memcache.so

[root@node3 memcache-2.2.7]# service php-fpm restart

这样memcached与lnmp的整合就成功了,刷新一下浏览器看一下是否有下面的内容

而后对memcached功能进行测试,在网站目录中建立测试页面test.php

[root@node3 ~]# cd /usr/html

[root@node3 html]# ls

index.php

[root@node3 html]# vim text.php

<?php

$mem = new Memcache;

$mem->connect("172.16.24.100", 11211)  or die("Could not connect");  

$version = $mem->getVersion();

echo "Server's version: ".$version."<br/>\n";

$mem->set('hellokey', 'Hello World', 0, 600) or die("Failed to save data at the memcached server");

echo "Store data in the cache (data will expire in 600 seconds)<br/>\n";

$get_result = $mem->get('hellokey');

echo "$get_result is from memcached server.";        

?>

下面是我的测试结果

再来介绍一个非常好用的工具memadmin-master,是用来显示memcached服务器运行情况的各个参数,这个工具很强大,这个工具用起来非常的简单,你从网上下载一个安装包,直接解压到web服务器所在的目录就可以。