首页 > 代码库 > Memcache 配置和使用

Memcache 配置和使用

1,ubuntu下配置 Memcached

2,Memcache使用方法


 

1)安装Memcache服务端

sudo apt-get install memcached

安装完Memcache服务端以后,我们需要启动该服务:

memcached -d -m 128 -p 11111 -u root


这里需要说明一下memcached服务的启动参数:

-p 监听的端口
-l 连接的IP地址, 默认是本机
-d start 启动memcached服务
-d restart 重起memcached服务
-d stop|shutdown 关闭正在运行的memcached服务
-d install 安装memcached服务
-d uninstall 卸载memcached服务
-u 以的身份运行 (仅在以root运行的时候有效)
-m 最大内存使用,单位MB。默认64MB
-M 内存耗尽时返回错误,而不是删除项
-c 最大同时连接数,默认是1024
-f 块大小增长因子,默认是1.25-n 最小分配空间,key+value+flags默认是48
-h 显示帮助2)安装Memcache客户端 

 

2)安装Memcache客户端(PHP5为示例)

sudo apt-get install php5-memcache

安装完以后我们需要在php.ini里进行简单的配置,打开/etc/php5/apache2/php.ini文件在末尾添加如下内容:

[Memcache]

 

; 是否在遇到错误时透明地向其他服务器进行故障转移。

memcache.allow_failover = On

 

; 接受和发送数据时最多尝试多少个服务器,只在打开memcache.allow_failover时有效。memcache.max_failover_attempts = 20

 

;数据将按照此值设定的块大小进行转移。此值越小所需的额外网络传输越多。

; 如果发现无法解释的速度降低,可以尝试将此值增加到32768。

memcache.chunk_size = 8192

 

; 连接到memcached服务器时使用的默认TCP端口。

memcache.default_port = 11111

 

; 控制将key映射到server的策略。默认值”standard”表示使用先前版本的老hash策略。

; 设为”consistent”可以允许在连接池中添加/删除服务器时不必重新计算key与server之间的映射关系。

;memcache.hash_strategy = “standard”; 控制将key映射到server的散列函数。默认值”crc32″使用CRC32算法,而”fnv”则表示使用FNV-1a算法。

; FNV-1a比CRC32速度稍低,但是散列效果更好。

;memcache.hash_function = “crc32″

 

最后,保存php.ini,执行sudo/etc/init.d/apache2 restart重启Apache。

3)在PHP中使用Memcache

<?php

$mem = new Memcache; //创建Memcache对象

$mem->connect(”127.0.0.1″, 11111); //连接Memcache服务器

$val = “这是一个Memcache的测试.”;

$key = md5($val);

$mem->set($key, $val, 0, 120); //增加插入一条缓存,缓存时间为120s

if(($k = $mem->get(’key’))){ //判断是否获取到指定的key

echo ‘fromcache:’.$k;

} else {

echo ‘normal’; //这里我们在实际使用中就需要替换成查询数据库并创建缓存.

}

?>

到此为止,通过上面的步骤,我们就完成了Memcache的配置和基本使用…

 

4)php5-memcache扩展提供的方法

Memcache::add — 添加一个值,如果已经存在,则返回false
Memcache::addServer — 添加一个可供使用的服务器地址
Memcache::close — 关闭一个Memcache对象
Memcache::connect — 创建一个Memcache对象
memcache_debug — 控制调试功能
Memcache::decrement — 对保存的某个key中的值进行减法操作
Memcache::delete — 删除一个key值
Memcache::flush — 清除所有缓存的数据
Memcache::get — 获取一个key值
Memcache::getExtendedStats — 获取进程池中所有进程的运行系统统计
Memcache::getServerStatus — 获取运行服务器的参数
Memcache::getStats — 返回服务器的一些运行统计信息
Memcache::getVersion — 返回运行的Memcache的版本信息
Memcache::increment — 对保存的某个key中的值进行加法操作
Memcache::pconnect — 创建一个Memcache的持久连接对象
Memcache::replace — R对一个已有的key进行覆写操作
Memcache::set — 添加一个值,如果已经存在,则覆写
Memcache::setCompressThreshold — 对大于某一大小的数据进行压缩
Memcache::setServerParams — 在运行时修改服务器的参数

 

以下是在操作系统ubuntu 10.04上的Memcached的安装与使用:

1. 下载解压,安装libevent

mkdir ~/src

cd ~/src

wgethttp://www.monkey.org/~provos/libevent-2.0.10-stable.tar.gz

tar xzvf libevent-2.0.10-stable.tar.gz

cd libevent-2.0.10-stable

./configure --prefix=/usr

make

sudo make install

cd ..

2.测试libevent是否安装成功:

# ls -al /usr/lib | grep libevent

 

3. 下载解压, 安装memcached

wgethttp://memcached.googlecode.com/files/memcached-1.4.5.tar.gz

tar xzvf memcached-1.4.5.tar.gz

cd memcached-1.4.5

./configure --with-libevent=/usr

make

sudo make install

cd ..

4.测试是否成功安装memcached:

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

 

5.启动Memcache的服务器端:

 # /usr/local/bin/memcached -d -m 10 -u root -l127.0.0.1 -p 11211 -c 256 -P /tmp/memcached.pid

-d    选项是启动一个守护进程,

-m   是分配给Memcache使用的内存数量,单位是MB,我这里是10MB,

-u    是运行Memcache的用户,我这里是root,

-l     是监听的服务器IP地址,如果有多个地址的话,我这里指定了服务器的IP地址127.0.0.1,

-p    是设置Memcache监听的端口,我这里设置了11211,最好是1024以上的端口,

-c    选项是最大运行的并发连接数,默认是1024,我这里设置了256,按照你服务器的负载量来设定,

-P    是设置保存Memcache的pid文件,我这里是保存在 /tmp/memcached.pid,

6.如果要结束Memcache进程,执行:

# kill ‘cat /tmp/memcached.pid‘

也可以启动多个守护进程,不过端口不能重复。

7.重启web服务

/etc/init.d/lighttpd -flighttpd.conf restart

8. Memcache环境测试:

telnet localhost 11211

//保存

set

good 32 0 10

helloworld

STORED

//取回

gets good

VALUE good 32 10 10

helloworld

END

 //替换

replace good 32 0 10

worldhello

STORED

get good

VALUE good 32 10

worldhello

END

 //尾部添加

append good 32 0 5

after

STORED

get good

VALUE good 32 15

worldhelloafter

END

 //头部添加

prepend good 32 0 6

before

STORED

get good

VALUE good 32 21

beforeworldhelloafter

END

 //删除

delete good

DELETED

get good

END

 

安装服务器

sudo apt-get install memcached

$ memcached -d -m 50 -p 11211 -uroot

参数说明 -m 指定使用多少兆的缓存空间;-p 指定要监听的端口; -u 指定以哪个用户来运行

 

安装php 模块

sudo apt-get install php5-memcache

 

编辑配置文件

$ sudo vim/etc/php5/conf.d/memcache.ini

; uncomment the next line to enablethe module

extension=memcache.so

 

[memcache]

memcache.dbpath="/var/lib/memcache"

memcache.maxreclevel=0

memcache.maxfiles=0

memcache.archivememlim=0

memcache.maxfilesize=0

memcache.maxratio=0

 

$mem = new Memcache;

$mem->connect("127.0.0.1",11211);

$mem->set(‘key‘, ‘This is amemcached test!‘, 0, 60);

$val = $mem->get(‘key‘);

echo $val;

 

Memcache 配置和使用