php5.4之分布式缓存memcache(windows7下安装配置)

来源:互联网 发布:c语言 break continue 编辑:程序博客网 时间:2024/06/06 10:00

使用理由:就是为了频繁查询数据库,而且数据有多!那么存到memcached内存就可以避免数据库的不断被访问,从而提速

一、安装memcache

memcached在windows7上的安装问题
 现在安装包:http://download.csdn.net/detail/qq1355541448/7587663 或者 http://www.jb51.net/softs/44843.html   memcache的安装包
错误:
通过cmd命令行进入到D:\webEve\memcached(下载后的解压目录)
运行 memcached.exe -d install
 
报错“ failed to install service or service already installed”
 
解决方法:
  www.2cto.com  
管理员身份安装,首先找出cmd.exe的原文件
右击以管理员身份运行,接下来就OK(win7下的用户还真麻烦).
 
Windows下的Memcache安装:
1. 下载memcache的windows稳定版,解压放某个盘下面,比如在D:\webEve\memcached
2. 在终端(也即cmd命令界面)下输入 ‘D:\webEve\memcached\memcached.exe -d install’ 安装
 
3. 再输入:'D:\webEve\memcached\memcached.exe -d start’ 启动。NOTE:
以后memcached将作为windows的一个服务每次开机时自动启动。这样服务器端已经安装完毕了。
4.下载php_memcache.dll,请自己查找对应的php版本的文件
5. 在php.ini 加入一行 ‘extension=php_memcache.dll’
6.重新启动Apache,然后查看一下phpinfo,如果有memcache,那么就说明安装成功!
 
memcached的基本设置:
 
-p 监听的端口
-l 连接的IP地址, 默认是本机
-d start 启动memcached服务
-d restart 重起memcached服务
-d stop|shutdown 关闭正在运行的memcached服务
-d install 安装memcached服务  www.2cto.com  
 
-d uninstall 卸载memcached服务
-u 以的身份运行 (仅在以root运行的时候有效)
-m 最大内存使用,单位MB。默认64MB
-M 内存耗尽时返回错误,而不是删除项
-c 最大同时连接数,默认是1024
-f 块大小增长因子,默认是1.25
-n 最小分配空间,key+value+flags默认是48
-h 显示帮助


二、安装好memcache进行memcached在php的扩展配置   

    php_memcached.dll csdn资源   http://download.csdn.net/detail/king_inguctmnv/5793675

    在php.ini中粘贴开启扩展   同时将此文件放到ext扩展文件中
那现在memcache就ok了可以用了,来试试!

<?php 
header("Content-type:text/html;charset=utf-8");
$host = '127.0.0.1:3306'; 
$user = 'root'; 
$passwd = ''; 
$db = 'test'; 
$conn = mysql_connect($host,$user,$passwd); 
mysql_select_db($db,$conn); 
mysql_query("set names utf8",$conn); 
$sql = 'select * from syl_rollback order by id desc'; 
$result = mysql_query($sql,$conn); 
while ($row = mysql_fetch_array($result,MYSQL_ASSOC)){ 
$test_key[] = $row; 

echo "<pre>";
var_dump($test_key);
echo "</pre>";
echo "<hr />";
$sql = md5($sql); 
$mem = new Memcache;                           //实例化memcache对象
$mem->connect("192.168.1.134", 11211);         //连接本地ip 11211是memcache的端口号
$mem->set($sql,$test_key, MEMCACHE_COMPRESSED, 600);  //将$test_key数组存放在键值为$sql里面注意:memcache缓存好的数据,有生存时间,默认会一个小时候过期,当然可以自己设置一个过期时间了,  600就是$sql这个键值对应的生存时间
echo "<pre>";
print_r($mem->get($sql));                      //获取键值为$sql的值
echo "</pre>";
 
?>


例二:

<?php 
header("Content-type:text/html;charset=utf8");
 
$sql = 'select * from syl_rollback order by id desc'; 
 
$sql = md5($sql); 
$mem = new Memcache; 
$mem->connect("192.168.1.134", 11211); 
//$mem->flush();  //对缓存数据进行清空
$mem->add("hehe","memcahce");  //给键值为hehe的设值value为memcache
echo $mem->get("hehe"),"<hr />"; //读取键值为hehe的值
echo "<pre>";
print_r($mem->get($sql)); 
echo "</pre>";
?>

此时,memcache你就基本上可以使用了,如何应用到你的网站中呢?

首先,封装好一个memcache实例化的类,然后进行调用,网站中获取数据时,先进性memcache缓存中读取,如果读取到了,即使用读取到的数据,显示到页面,此时就不操作数据库了,节省了好多时间啊!如果没用从缓存中读到数据,即操作数据库获取!


也就是先和memcache要数据,如果没有再去数据库读,注意读取后,马上存到memcache中

运行a.php后b.php即可读取,注意设置了过期时间是5秒
小例子: 
a.php
<?php
header("Content-type:text/html; charset=utf-8");


/**
 *  memcached first class
 */  
$mem = new Memcache; 
$mem->connect("localhost", 11211);  
$mem->flush();  //对缓存数据进行清空 
$mem->add("hehe","memcahce",MEMCACHE_COMPRESSED,5);  //给键值为hehe的设值value为memcache
echo $mem->get("hehe"),"<hr />"; //读取键值为hehe的值 
?>
b.php
<?php
header("Content-type:text/html; charset=utf-8");


/**
 *  memcached first class
 */  
$mem = new Memcache; 
$mem->connect("localhost", 11211);    
echo $mem->get("hehe"),"<hr />"; //读取键值为hehe的值  
?>

0 0
原创粉丝点击