Memcached安装,基本语法。

1.Memcached是什么?

memcached 是以 LiveJournal 旗下 Danga Interactive 公司的 Brad Fitzpatric 为首开发的一款软件。现在
已成为 mixi、hatena、Facebook、Vox、LiveJournal 等众多服务中提高 Web 应用扩展性的重要因素。
许多 Web 应用都将数据保存到 RDBMS 中,应用服务器从中读取数据并在浏览器中显示。但随着数
据量的增大、访问的集中,就会出现 RDBMS 的负担加重、数据库响应恶化、网站显示延迟等重大
影响。
这时就该 memcached 大显身手了。memcached 是高性能的分布式内存缓存服务器。一般的使用目的
是,通过缓存数据库查询结果,减少数据库访问次数,以提高动态 Web 应用的速度、提高可扩展
性。
在这里插入图片描述

2.Memcached的特征

Memcached作为高速运行的分布式缓存服务器,具有一下的特点。

  • 协议简单
  • 基于lievent的事件处理
  • 内置内存存储方式
  • memcached不互相通信的分布式

3.内置内存存储方式

为了提高性能,memcached中保存的数据都存储在memcached内置的内存存储空间中,由于数据仅存在域内存中,因此重启memcached,重启操作系统会导致全部数据消失,另外,内容容量达到指定值之后,就基于LRU(Least Recently Used)算法自动删除不适用的缓存,memcached本身是为缓存而设计的服务器,因此并没有过多考虑数据的永久问性问题。

  • 数据存储方式:Slab Allocation
  • 数据过期方式:LRU,laxzy Expiration
memcached不互相通信的分布式

memcached尽管是“分布式”缓存服务器,但服务器端并没有分布式功能,各个memcached不会互相通信以共享信息,那么怎么进行分布式呢?这完全取决于客户端的实现。
在这里插入图片描述

一:安装Memcached服务器

Memcached作为daemon后台启动时,只需

[root@Memcached1 /]# /usr/local/memcached/bin/memcached -p 11211 -m 64 -d

选项说明
-p使用的TCP端口,默认为11211
-m最大内存大小,默认为64M
-v v用very vrebose模式启动,调用信息和错误输出到控制台
-d作为daemon在后台启动
-u指定以谁的身份运行
-x指定对端服务器,做双主模式的时候

上面时几个常用的启动选项,其他还有很多,可以通过来显示

[root@Memcached1 /] /usr/local/memcached/bin/memcached -h
名称IP地址角色主要软件包
Memcached192.168.10.101Memcached服务器memcached-1.5.1.tar libevent-2.1.8-stable.tar
Memcached192.168.10.102Memcached服务器memcached-1.5.1.tar libevent-2.1.8-stable.tar
Memcached API192.168.10.201Memcached API 客户端memcached-2.2.0 libmemcached-1.0.18.tar

1.安装Libevent
libevent是一款跨平台的事件处理接口的封装,可以兼容多个操作系统的事件访问,Memcached的安装依赖于LIbevent,因此需要先完成Libevent的安装。

[root@Memcached1 src]# yum -y install gcc* make
[root@Memcached1 src]# tar zxvf libevent-2.1.8-stable.tar.gz
[root@Memcached1 src]# cd libevent-2.1.8-stable/
[root@Memcached1 libevent-2.1.8-stable]# ./configure --prefix=/usr/local/libevent && make && make install

到处Libevent安装完毕,接下来就可以开始安装Memcached了。

2.安装Memcached
采用源码安装的方式进行Memcached的编译安装,安装时需要指定Libevent的安装路径

[root@Memcached1 src]# tar zxvf memcached-1.5.1.tar.gz
[root@Memcached1 src]# cd memcached-1.5.1/
[root@Memcached1 memcached-1.5.1]# ./configure --prefix=/usr/local/memcached --with-libevent=/usr/local/libevent && make && make install

3.设置Memcached服务脚本
Memcached服务器安装完成后,可以使用安装目录下的bin/memcached来启动服务,但是为了更加方便管理Memcached,还是编写脚本来管理Memcached服务。

[root@Memcached1 memcached]# vim /usr/local/memcached/memcached
[root@Memcached1 memcached]# chmod +x memcached
[root@Memcached1 memcached]# netstat -antp | grep memcached

#!/bin/bash
CMD="/usr/local/memcached/bin/memcached"
start(){
$CMD -d -m 128 -u root
}
stop(){
killall memcached;
}
ACTION=$1
case $ACTION in
'start')
   start;;
'stop')
   stop;;
'restart')
   stop
   sleep 2
   start;;
*)
   echo 'Usage:{start|stop|restart}'
esac     

两台Memcached都需要安装。

二:Memcached API客户端安装

为了使得程序可以直接调用Memcached库和接口,可以使用memcached扩展组件将Memcached添加为PHP的一个模块,此扩展使用了Libmemcached库提供的API与Memcached服务器进行交互。

1.编译安装Libmemcached
在编译Memcached扩展组件时,需要指定Libmemcached库的位置,所以先安装Libmemcached库

[root@LNMP src]# tar zxvf libmemcached-1.0.18.tar.gz
[root@LNMP libmemcached-1.0.18]# ./configure --prefix=/usr/local/libmemcached --with-memcached=/usr/local/memcached && make && make install

2.编译安装Memcached扩展
然后就可以进行PHP的Memcached扩展组件安装,注意配置Memcached API时,memcached-2.2.0.tgz源码包中默认没有configure配置脚本,需要使用PHP的phpize脚本生成配置脚本configure。

[root@LNMP src]# tar zxvf memcached-2.2.0.tgz
[root@LNMP memcached-2.2.0]# /usr/local/php5/bin/phpize
Configuring for:
PHP Api Version: 20090626
Zend Module Api No: 20090626
Zend Extension Api No: 220090626
Cannot find autoconf. Please check your autoconf installation and the
$PHP_AUTOCONF environment variable. Then, rerun this script.
如果这一步报错,需要安装:
[root@LNMP memcached-2.2.0]# yum -y install autoconf
[root@LNMP memcached-2.2.0]# /usr/local/php5/bin/phpize
[root@LNMP memcached-2.2.0]# ./configure --enable-memcached --with-php-config=/usr/local/php5/bin/php-config --with-libmemcached-dir=/usr/local/libmemcached --disable-memcached-sasl
[root@LNMP memcached-2.2.0]# make && make install

Installing shared extensions: /usr/local/php5/lib/php/extensions/no-debug-non-zts-20090626/
-------------------------共享组件的位置

注意 配置时使用–disable-memcached-sasl选项关闭memcached的sasl认证功能,否则报错。

3.配置PHP添加Memcached组件
编辑PHP配置文件php.ini,添加Memcached组件。

[root@LNMP /]# cd /usr/local/php5/
[root@LNMP php5]# vim php.ini
-----------------添加一下内容------------------
825 extension_dir = “/usr/local/php5/lib/php/extensions/no-debug-non-zts-20090626/” 找到Memcachde的目录
826 extension = memcached.so 开启模块

4.重启Apache服务。

[root@LNMP bin]# /usr/local/httpd/bin/apachectl restart

查看
在这里插入图片描述

5.测试Memcached API功能
通过编写简单的PHP测试代码调用Memcache程序接口,来测试是否与Memcacehd服务器协同工作。

<?php
$memcache = new Memcached();
$memcache->addServer('192.168.10.101', 11211);
$memcache->set('key', 'Memcache test successful!', 0, 60);
$result = $memcache->get('key');
unset($memcache);
echo $result;
?>  

在这里插入图片描述

Memcached数据库操作和管理

Memcached协议简单,可直接使用telnet连接Memcached的11211端口,对memcached数据进行操作与管理。

[root@Memcached1 /]# telnet 192.168.10.101 11211 连接Memcached数据库

1.常见操作指令

①:添加一条键值数据

add username 0 0 8
zhangsan
STORED

其中 add username 0 0 8 表示键值名为username,标记位表示自定义信息为0,过期事件为0(永不过期,单位为秒),字节数为8,zhangsan为键值,注意输入长度为8字节,与设定值相符合。

②:查询键值数据

get username
VALUE username 0 8
zhangsan
END

gets username
VALUE username 0 8 3
zhangsan
END

其中get后跟键值名,如果检查最近是否更新,可以使用gets,最后一位显示的时更新因子,每更新一次更新因子数会加1

3.更新一条键值数据

set username 0 0 10
zhangsansb
STORED

get username
VALUE username 0 10
zhangsansb
END

其中set后跟需要更新的键值名,标记为,过期时间,字节数,如果键值名不存在,set相当于add,如果仅仅是想单纯的更新没有添加的功能,使用replace,此时更新的键值名必须存在,如果键值不存在,就会报NOT_STORED的错误。

replace username 0 0 12
zhangsansbsb
STORED

gets username
VALUE username 0 12 5
zhangsansbsb
END

replace username1 0 0 7
zhangsan
CLIENT_ERROR bad data chunk
ERROR

④:清除一条缓存数据

delete username
DELETED
get username
END

使用delete删除一条键值为username的缓存数据,使用get查看发现没有内容存在。

5.检查后更新

add username 0 0 4
lisi
STORED

gets username
VALUE username 0 4 6
lisi
END

cas username 0 0 4 1
lili
EXISTS

cas username 0 0 4 6
lili
STORED

gets username
VALUE username 0 4 7
lili
END

如果cas的最后一个更新因子数与gets返回的更新因子数相等,则更新,否则返回EXISTS

⑥:追加数据

get username    
VALUE username 0 4
lili
END

append username 0 0 6
lisisb
STORED

get username
VALUE username 0 10
lililisisb
END

在键值名username的原键值后追加数据使用append

get username
VALUE username 0 10
lililisisb
END

prepend username 0 0 2
wo
STORED

get username
VALUE username 0 12
wolililisisb
END

在键值名username的原键值前追加数据使用prepend。

⑦:清除所有缓存数据

flush_all
OK

⑧:查看服务器统计信息

stats
stats itenm //返回所有键值对的统计信息
stats cachedump 1 0 //返回指定储存空间的键值对
stats slabs //显示各个slab信息,包括chunk的大小,数目,使用情况等
stats sizes //输出所有item的大小和个数
stats reset //清空统计的数据
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值