注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

天朝布衣田中码农参上

苦逼码农的点点滴滴,请多多指教!

 
 
 

日志

 
 
 
 

PHP搭配Memcached的简单调用  

2016-07-13 20:55:50|  分类: 服务器 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
Memcached是danga.com(运营LiveJournal的技术团队)开发的一套分布式内存对象缓存系统,用于在动态系统中减少数据库负载,提升性能。
适用场合:
1) 分布式应用。由于memcached本身基于分布式的系统,所以尤其适合大型的分布式系统。
2) 数据库前段缓存。数据库常常是网站系统的瓶颈。数据库的大并发量访问,常常造成网站内存溢出。当然我们也可以使用Hibernate的缓存机制。但memcached是基于分布式的,并可独立于网站应用本身,所以更适合大型网站进行应用的拆分【nosql】。
3) 服务器间数据共享。
不适用场合:
那些不需要“分布”的,不需要共享的,或者干脆规模小到只有一台服务器的应用,memcached不会带来任何好处,相反还会拖慢系统效率,因为网络连接同样需要资源。
Memcached本身是使用C开发的,客户端可以是php、C#、或者java。这里仅用PHP来简单举例:

<?php
$memcache = new Memcache; //创建一个memcache对象
$memcache->connect('127.0.0.1', 11211) or die ("Could not connect"); //连接Memcached服务器
$memcache->set('key', '593668.com'); //设置一个变量到内存中,名称是key 值是test
$get_value = $memcache->get('key'); //从内存中取出key的值
echo $get_value; //593668.com
?>

显示页面如下:
PHP搭配Memcached的简单调用 - sinsunson - 天朝布衣田中码农参上

<?php
//连接Memcache
$mem = new Memcache;
$mem->connect("127.0.0.1", 11211);
//保存数据
$mem->set('key1', '593688.com is a good site.', 0, 60);
echo "Get key1 value: " . $mem->get('key1') ."<br>"; //593688.com
//替换数据
$mem->replace('key1', '237h.com is a good site.', 0, 60); //237h.com
echo "Get key1 value: " . $mem->get('key1') . "<br>";
//保存数组数据
$arr = array('593668.com', '237h');
$mem->set('key2', $arr, 0, 60);
echo "Get key2 value: ";
print_r($mem->get('key2'));
echo "<br>";
//删除数据
$mem->delete('key1');
echo "Get key1 value: " .$mem->get('key1') . "<br>"; //显示为空
//清除所有数据
$mem->flush();
echo "Get key2 value: ";
print_r($mem->get('key2'));
echo "<br>";
//关闭连接
$mem->close();
?>

显示页面如下:
PHP搭配Memcached的简单调用 - sinsunson - 天朝布衣田中码农参上
还有多台服务器的使用范例【这里的数据同步都无需PHP处理,Memcached会自行管理】:

<?php
//连接Memcache
$mem = new Memcache;
//加入两台服务器
$mem->addServer("127.0.0.1", 11211);
$mem->addServer("192.168.1.250", 11212);
//保存数据
$mem->set('key1', '593668.com is a good site.', 0, 60);
echo "Get key1 value: " . $mem->get('key1') . "<br>";
//关闭连接
$mem->close();
?>

好了,Memcached的使用方法非常简便,但是请注意如下方面:
? 在 Memcached 中可以保存的item数据量是没有限制的,只有内存足够。
? Memcached单进程最大使用内存为2G,要使用更多内存,可以分多个端口开启多个Memcached进程。
? 最大30天的数据过期时间, 设置为永久的也会在这个时间过期,常量REALTIME_MAXDELTA 60*60*24*30 控制。
? 最大键长为250字节,大于该长度无法存储,常量KEY_MAX_LENGTH 250 控制。
? 单个item最大数据是1MB,超过1MB数据不予存储,常量POWER_BLOCK 1048576 进行控制, 它是默认的slab大小 。
? 最大同时连接数是200,通过 conn_init()中的freetotal 进行控制,最大软连接数是1024,通过 settings.maxconns=1024 进行控制。
? 跟空间占用相关的参数:settings.factor=1.25, settings.chunk_size=48, 影响slab的数据占用和步进方式。
有了以上的知识,基本上大家都可以把Memcached运用得很好了。
  评论这张
 
阅读(0)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018