Memcached的安装及管理
Linux下安装MemCache软件
.configure --prefix=/usr/local/libevent
make
make install
.configure --prefix=/usr/local/MemCahce --with-libevent=/usr/local/libevent/
make
make install
useradd memcache //创建用户
#/usr/local/memcache/bin/memcahce -umemcached & //后台运行
netstat -tnl //查看正在运行的端口 11211
Windows下安装MemCache
- 下载Memcahced二进制文件
- 解压到D:\memcached
- 安装、删除、启用、停用memcached
memcached.exe -d install
memcached.exe -d uninstall
memcached.exe -d start
memcached.exe -d stop
Memcached服务器的管理
memcached.exe -d -m 2048 -l localhost -p 11211
选项参数 | 描述 |
---|
-d | 以守护进程的方式运行memcached |
-m | 〈num〉分配给memcached使用的内存数量,单位是MB,默认为64MB |
-u | 〈username〉运行memcached的用户,当前用户为rootj时,可以指定用户(不能以root用户权限启动) |
-l | 〈ip_addr〉设置监听的服务器IP地址,如果是本机,则通常不设置 |
-p | 〈num〉设置memcache监听的端口,最好是1024以上的端口,默认为11211,通常不设置 |
-c | 〈num〉设置最大并发连接数,默认为1024 |
-P | 〈file〉设置保存memcache的pid文件,与-d选项同时使用 |
-vv | 用vary verbose模式启动,调试信息和错误输出到控制台 |
使用TeInet作为memcache的客户端管理
telnet localhost 11211 //使用Telnet客户机骰memcached,本机的11211端口
stats:当前所有memcached服务器运行的状态信息
add:添加一个数据到服务器
set:替换一个已经存在的数据。如果数据不存在,则和add命令相同。
get:从服务器端提取指定的数据。
delete:删除指定的单个数据。如果要清除所有数据,可以使用flush_all指令。
incr:自增长某个值
decr:自增减某个值
如果以上命令发生错误,MemCache协议会对错误部分作出提示。主要有三个错误提示的指令,如下所示。
ERROR:普通的错误信息,比如指令错误之类。
CLIENT_ERROR<错误信息>:客户端错误。
SERVER_ERROR<错误信息>:服务器错误。
<命令><键><标记><有效期><数据长度>
add key 0 0 4
set key 0 0 4
<命令><键>
get key
delete key
<命令><键><步长>
incr age 2
decr age 2
安装PHP中的MemCache应用程序扩展接口
Linux系统下的安装方法
- 下载并解压MemCache扩展包文件(要和当前PHP版本对应),如下所标:
wgct -c http://pecl.php.net/get/memcahce-3.0.6.tgz #下载软件
tar xzvf emecache-3.0.6.tgz #解压缩包
cd memcache-3.0.6 #进入源代码目录
- 执行phpize扩展安装程序,假设phpzie的路径为/usr/local/php/bin/phpize,具体的路径需根据自己的环境修改,如下图所示:
/usr/local/php/bin/phpize #执行phpize扩展安装程序
./configure --enable-memcache --with-php-config=/usr/local/php/bin/php-config --with-zlib-dir #配置
make && make install ##编译和安装
- 最后修改php.ini文件,在zend之前加入,如下图所示:
[memcache] #php.ini中的memcache部分
extension_dir="/usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/"#指定扩展目录
xetension=memcache.so #加载扩展模块
Windows系统下的安装方法
- 将下载的php_memcache.dll文件保存到PHP的应用程序扩展ext目录中。
- 在php.ini文件添加扩展的位置,加入一行"extension=php_memcache.dll"
- 重新启动Apache服务器。
MemCache应用程序扩展接口
Memcache中的方法 | 描述 |
---|
Memcahce::connect() | 打开一个到memcache的连接 |
Memcahce::pconnect() | 打开一个到memcache的长连接 |
Memcahce::addServer() | 分布式服务器添加一个服务器 |
Memcahce::close() | 关闭一个到memcache的连接 |
Memcahce::getStats() | 获取当前memcache服务器的运行状态 |
Memcahce::add() | 添加一个值,如果已经存在,则返回false |
Memcahce::set() | 添加一个值 ,如果已经存在,则覆盖 |
Memcahce::replace() | 替换一个已经保存在memcache服务器上的项目(set的别名) |
Memcahce::get() | 提取一个保存在memcache服务器上的数据 |
Memcache::delete() | 从memcache服务器上删除一个保存的项目 |
Memcache::flush() | 刷新mamcache服务器上保存的所有项目(类似于删除所有保存的项目) |
bool Memcache::connect(string $host[,int $port[,int $timeout]])
<域名><端口><失效时间>
bool Memcache::add(string $key , mixed $var [,int $flag[,int $expire]])
bool Memcache::set(string $key , mixed $var [,int $flag[,int $expire]])
bool Memcache::replace(string $key , mixed $var [,int $flag[,int $expire]])
<键><值><是否压缩><过期时间>
string Memcache::get($string $key [,int &$flags])
string Memcache::get($string $keys [,array &$flags])
<键><>
bool Memcache::delete($tring $key[,int $timeout])
<键><失效时间>
bool Memcache::addServer(string $host[,int $port[,bool $persistent[,int $weight[,int $timeout[,int $retry_interval[,bool $status[,callback $failure_callback[]]]]]]]])
<域名><端口><是否持久连接><权重><持续时间><重连间隔时间><在线状态><回调处理错误>
array Memcache::getStats([string $type[, int $slabid[,int $limit]]])
<要求返回的类型><><长度>
Memcacher的实例应用
<?php
/** 该函数用于执行有结果集的SQL语句,并将结果缓存到memcache服务器中
@param string $sql 有结果集的查询语句SQL
@param object $memcache Memacahe类的对象
@return $data 返回结果集的数据 */
function select($sql,Memcache $macache){
//md5 SQL命令,作为memCache的唯一标识符
$key = md5($sql);
//先从memcache服务器中获取数据
$data = $memcache->get($key);
//如果$data为false就是没有数据,那么就需要从数据库中获取
if(!$data){
try{ //很有必要将连接数据库的过程单独处理
$pod = new PDO("mysql:host=localhost;dbname=dbtest","mysql_user","mysql_pass");
}catch(PDOException $e){
die("连接失败:".$e->getMessage());
}
$stmt = $pdo->prepare($sql);
$stmt = execute();
//从数据库中获取数据,返回二进制数组$data
$data = $stmt->fetchALL(POD::FETCH_ASSOC);
//这里向memcache服务器写入从数据库中获取的数据
$memcache->add($kdy,$data,MEMCACHE_COMPRESSED,0);
}
return $data;
}
$memcache = new Memcache;
//可以使用addServer()方法添加多台memcache服务器
$memcache -> connect('localhost',11211);
//第一次运行还没有缓存数据,会读取一次数据库,当再次访问程序时,就直接到memcache获取
$data = select("SELECT * FROM user",$memcache);
var_dump($data); //输出数据