ITKeyword,专注技术干货聚合推荐

注册 | 登录

memcahce添加服务器,实现集群,memcache笔记

json_ligege 分享于 2016-08-05

推荐:nginx-1.4.7+tomcat6.0.32+memcache做服务器集群以及session共享

简介 使用nginx做分发器,tomcat6做服务器,使用memcached实现session共享 1.搭建环境:windows 2.准备: <1>下载nginx-1.4.2,解压到E:\server\nginx文件夹下 <2

Memcache的资料我就不详述了,如果不知道,可以看:memcache笔记

想要实现memcache的集群,当然前提就是编译环境安装好,memcache安装好,这就不说了。

下面就直接进入主题:

代码及注释:

mem1.php
/*
memcached 添加服务器  实现集群
 */
$mem=new Memcache;

//$mem->connect('localhost', 11211); //不用这个连接
//添加两个端口分别为11211 9999 9998的服务器
$mem->addServer('127.0.0.1',11211);
$mem->addServer('127.0.0.1',9999);
$mem->addServer('127.0.0.1',9998);

/*
Memcache::addServer()增加一个服务器到连接池中。
通过Memcache::addServer() 
打开的连接将会在脚本执行结束后自动关闭,
也可以使用Memcache::close()进行手动关闭。 
您也可以使用memcache_add_server()来添加服务器。
 */
echo $mem->set('k1','haha',0,0)?'存储k1 ok':'error_k1';
echo $mem->set('k2','nihao',0,0)?'存储k2 ok':'error_k2';;
echo $mem->set('k3','test',0,0)?'存储k3 ok':'error_k3';;
echo "<hr>";
echo $mem->get('k1')."<br>";
echo $mem->get('k2')."<br>";
echo $mem->get('k3')."<br>";
 ?>
那么,memcacahe是如何知道存储到哪个服务器上的呢?

把k1 k2 k3放到11211端口还是9999端口还是9998端口,

有$mem对象本身操作 hash/sha1/md5等算法,来操作,

不用我们操心;

memcache的内部有设定的算法,来分配存储数据。

这样就懂了吧!

浏览器效果图:


那么,存取完了,我们有了一个新的问题:我们用memcache服务一般在项目中,

不可能只是在一个单页面使用,那么在另外的页面怎么取值呢

推荐:服务器数据库系列 - memcache内存分配

一、Memcache内存分配机制         关于这个机制网上有很多解释的,我个人的总结如下。 Page为内存分配的最小单位。 Memcached的内存分配以page为单位,默认情况

代码及注释:


<?php
 header('content-type:text/html;charset=utf8 ');
//创建mem2.php
/*
memcached 添加服务器  实现集群
 */
$mem=new Memcache;

//$mem->connect('localhost', 11211); //不用这个连接
//把刚才的几个添加服务器的连接 粘贴过来
$mem->addServer('127.0.0.1',11211);
$mem->addServer('127.0.0.1',9999);
$mem->addServer('127.0.0.1',9998);

//然后,直接该怎么取怎么取就行了,它会自动识别

echo $mem->get('k1')."<br>";
echo $mem->get('k2')."<br>";
echo $mem->get('k3')."<br>";
?>

浏览器效果图:



当然,那个貌似报错的东东,如果觉得碍事的话,能不能去掉呢,当然可以,我提供一种方式:

echo @$mem->set('k1','haha1',0,0)?'存储k1 ok':'error_k1';
echo @$mem->set('k2','nihao1',0,0)?'存储k2 ok':'error_k2';;
echo @$mem->set('k3','test1',0,0)?'存储k3 ok':'error_k3';;
echo "<hr>";
echo @$mem->get('k1')."<br>";
echo @$mem->get('k2')."<br>";
echo @$mem->get('k3')."<br>";
//在存、取的时候加上@符号,就可以屏蔽掉


效果图:


这时候,是不是又有了新的疑问,加入好几个服务器,会不会很浪费很多资源,

加大服务器的压力,不着急,这个方法已经给我们解释清楚了;

Memcache::addServer()增加一个服务器到连接池中。通过Memcache::addServer() 打开的连接将会在脚本执行结束后自动关闭,也可以使用Memcache::close()进行手动关闭。 您也可以使用memcache_add_server()来添加服务器。

当使用这个方法的时候(与Memcache::connect()Memcache::pconnect()相反) 网络连接并不会立刻建立,而是直到真正使用的时候才建立。 因此在加入大量服务器到连接池中时也是没有开销的,因为它们可能并不会被使用。

好了,完成了,是不是很简单呢?

推荐:[收藏]服务器集群

简介    集群服务在企业组织部署关键业务、电子商务与商务流程应用起到了日益重要的作用。    集群是在一组计算机上运行相同的软件并虚拟成一台主机系统为客

Memcache的资料我就不详述了,如果不知道,可以看:memcache笔记 想要实现memcache的集群,当然前提就是编译环境安装好,memcache安装好,这就不说了。 下面就直接进入主题: 代码及注释: mem1

相关阅读排行


用户评论

游客

相关内容推荐

最新文章

×

×

请激活账号

为了能正常使用评论、编辑功能及以后陆续为用户提供的其他产品,请激活账号。

您的注册邮箱: 修改

重新发送激活邮件 进入我的邮箱

如果您没有收到激活邮件,请注意检查垃圾箱。