5.34Memcached管理与应用

Memcached的安装及管理

Linux下安装MemCache软件

  • 安装ibevent
.configure --prefix=/usr/local/libevent
make
make install
  • 安装Memcached
.configure --prefix=/usr/local/MemCahce --with-libevent=/usr/local/libevent/
make
make install
  • 创建一个Memcache用户
useradd memcache	//创建用户
#/usr/local/memcache/bin/memcahce -umemcached &		//后台运行
netstat -tnl	//查看正在运行的端口 11211

Windows下安装MemCache

  1. 下载Memcahced二进制文件
  2. 解压到D:\memcached
  3. 安装、删除、启用、停用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的客户端管理

  • 连接Memcached
telnet localhost 11211		//使用Telnet客户机骰memcached,本机的11211端口
  • 基本的Memcached客户端命令
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扩展安装程序
  • 开始安装扩展MemCache,如下图所示:
./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系统下的安装方法

  1. 将下载的php_memcache.dll文件保存到PHP的应用程序扩展ext目录中。
  2. 在php.ini文件添加扩展的位置,加入一行"extension=php_memcache.dll"
  3. 重新启动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);	//输出数据

转载于:https://my.oschina.net/Alrcly/blog/848145

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值