[免费注册]
  • 腾讯QQ
  • 人人网
  • 新浪微博
  • 腾讯微博
BUG反馈 | 广告合作 | 网页游戏 | 帮助中心
站内公告:
首页 解决方案 基础语法 php 分布式缓存Memcache在php环境下应用

分布式缓存Memcache在php环境下应用

分享到:
dsfsdf 离线 时间: 2011-03-17 16:03 阅读(783) 评论(0)
在开发程序过程中,效率始终是我们最头痛的问题,如何才能提高程序运行效率?如何提高程序并发速度?memcache给我带来了福音,经过近一年实 践,发现这东西挺好用的,据说国内阿里巴巴,51等等知名企业均用此系统,所以关于memcache的效率还是比较值得我们肯定的。

缓存的目的是什么?
  缓存的目的就是为了提高响应速度,尤其是并发访问的速度,降低数据库服务器的压力,在同等硬件配置的情况下,提供更高的系统性能。

Memcache是什么?
  Memcached是由Danga Interactive开发的,高性能的,分布式的内存对象缓存系统,用于在动态应用中减少数据库负载,提升访问速度。

Memcache能缓存什么?
       通过在内存里维护一个统一的巨大的hash表,Memcached能够用来存储各种格式的数据,包括图像、视频、文件以及数据库检索的结果等。
Memcache快么?
       非常快。Memcached使用了libevent(如果可以的话,在linux下使用epoll)来均衡任何数量的打开链接,使用非阻塞的网络I/O, 对内部对象实现引用计数(因此,针对多样的客户端,对象可以处在多样的状态), 使用自己的页块分配器和哈希表, 因此虚拟内存不会产生碎片并且虚拟内存分配的时间复杂度可以保证为O(1).。
       Danga Interactive为提升Danga Interactive的速度研发了Memcached。目前,LiveJournal.com每天已经在向一百万用户提供多达两千万次的页面访问。而这 些,是由一个由web服务器和数据库服务器组成的集群完成的。Memcached几乎完全放弃了任何数据都从数据库读取的方式,同时,它还缩短了用户查看 页面的速度、更好的资源分配方式,以及Memcache失效时对数据库的访问速度。

Memcached的特点
       Memcached的缓存是一种分布式的,可以让不同主机上的多个用户同时访问, 因此解决了共享内存只能单机应用的局限,更不会出现使用数据库做类似事情的时候,磁盘开销和阻塞的发生。

服务端安装
 
memcache windows版本服务端下载:
http://jehiah.cz/projects/memcached-win32/
 
服务端解压到某位置
然后cmd -> 执行 memecache.exe -d install
memcache.exe -d start
 
其他命令见下面
 
服务端去查看一下windows的服务,看有没有memcache
 
客户端安装
 
php memcache dll下载地址:
http://pecl4win.php.net/list.php】注意本地址已经无法下载了~其他他们官方继续放出下载。不过大家不用担心。我已经打包好了。想要的同学可以自行下载。
 
将php_memcache.dll放到php文件夹的ext中
php.ini中添加extension那部分 extension=php_memcache.dll
 

php查看是否有memcache

phpinfo();

测试
 
注释的东西反复折腾几次熟悉一下memcache~,其他memcache方法见下面
header(“Content-type: text/html; charset=utf-8″);
$mem = new Memcache();
$mem->connect(‘127.0.0.1′);
//$mem->set(‘key’, 'This is a test!’, 0, 60);
$val = $mem->get(‘key’);
//$mem->flush();
echo $val;

memecache服务端命令
 
-p 监听的端口
-l 连接的IP地址, 默认是本机
-d start 启动memcached服务 (在windows下同时加入自启动中)
-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 显示帮助
 
——————————————————-
 
php中memcache操作方法
 
Memcache::add — Add an item to the server
Memcache::addServer — Add a memcached server to connection pool
Memcache::close — Close memcached server connection
Memcache::connect — Open memcached server connection
memcache_debug — Turn debug output on/off
Memcache::decrement — Decrement item’s value
Memcache::delete — Delete item from the server
Memcache::flush — Flush all existing items at the server
Memcache::get — Retrieve item from the server
Memcache::getExtendedStats — Get statistics from all servers in pool
Memcache::getServerStatus — Returns server status
Memcache::getStats — Get statistics of the server
Memcache::getVersion — Return version of the server
Memcache::increment — Increment item’s value
Memcache::pconnect — Open memcached server persistent connection
Memcache::replace — Replace value of the existing item
Memcache::set — Store data at the server
Memcache::setCompressThreshold — Enable automatic compression of large values
Memcache::setServerParams — Changes server parameters and status at runtime

备注:memcache 还有另外一个版本。memcached  .一个字母之差。功能却别在哪里呢?具小的所知有D的这个版本才是分布式的。而且目前网络上我找不到windows下的php 的dll 扩展。不过linux 下版本倒是好用。麻烦就是要去编译安装~呵呵,下次有时间整理出来给各位看客们评评~

网友评论: 共有0条评论

我来评论

guest

登录 (请登录发言,并遵守相关规定
小提示:
• 运行html请点击源码添加
• 添加完毕后加上<br />
• 显示html直接复制黏贴
• 高亮代码请点击插入代码

小贴士:

1. 请各位网友在回复的时候不为了回复而回复,尽量发一些有质量的回复内容。

2. 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。

3. 请勿到处挖坑绊人、招贴广告。即占空间让人厌烦,又没人会搭理,于人于己都无利。如果您发现自己的回复不见了,请参考以上3条。

设为首页 | 加入收藏 | 关于我们 | 著作权声明 | 合作信息 | 麦琪开源PHP框架 IT-知识库 Copyright 2010 - 2011 ITZSK Corporation,ALL Rights Reserved. 版权所有
内存使用:1,269.89KB 执行速度:0.02007seconds