这里承接我上一篇所搭建的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服务器所在的目录就可以。