memcached分布式部署
来源:互联网 发布:js 声明json对象 编辑:程序博客网 时间:2024/05/18 10:54
$mem = new Memcache;$mem->addServer($memcachehost, '11211'); $mem->addServer($memcachehost, '11212');$mem->set('hx','9enjoy');echo $mem->get('hx');
$md = new Memcached;$servers = array(array($memcachehost, '11211'),array($memcachehost, '11212'));$md->addServers($servers);$md->set('hx','9enjoy');echo $md->get('hx');
memcached的方法比memcache多不少,比如getMulti,getByKey,addServers等。
memcached没有memcache的connect方法,目前也还不支持长连接。
memcached 支持 Binary Protocol,而 memcache 不支持,意味着 memcached 会有更高的性能。
Memcache是原生实现的,支持OO和非OO两套接口并存,memcached是使用libmemcached,只支持OO接口。
memcached服务端是集中式的缓存系统,分布式实现方法是由客户端决定的。
memcached的分布算法一般有两种选择:
1、根据hash(key)的结果,模连接数的余数决定存储到哪个节点,也就是hash(key)% sessions.size(),这个算法简单快速,表现良好。然而这个算法有个缺点,就是在memcached节点增加或者删除的时候,原有的缓存数据将大规模失效,命中率大受影响,如果节点数多,缓存数据多,重建缓存的代价太高,因此有了第二个算法。
2、Consistent Hashing,一致性哈希算法,他的查找节点过程如下:
首先求出memcached服务器(节点)的哈希值,并将其配置到0~232的圆(continuum)上。然后用同样的方法求出存储数据的键的哈希值,并映射到圆上。然后从数据映射到的位置开始顺时针查找,将数据保存到找到的第一个服务器上。如果超过2的32次方后仍然找不到服务器,就会保存到第一台memcached服务器上。
memcache在没有任何配置的情况下,是使用第一种方法。
memcached要实现第一种方法,使用(未确认):
$md->setOption(Memcached::OPT_HASH, Memcached::HASH_CRC);
<?php$m = new Memcached();$m->addServers(array( array('127.0.0.1',11211,90), array('127.0.0.1',11212,10),));$m->setOption(Memcached::OPT_HASH, Memcached::HASH_CRC); $m->setOption(Memcached::OPT_LIBKETAMA_COMPATIBLE,true);for($i=0;$i<100;$i++){ $key = "k_$i"; $m->set($key,'v_'.$key);}?>
第二种一致性哈希算法:
memcache在php.ini中加:
Memcache.hash_strategy =consistent
Memcache.hash_function =crc32
memcached在程序中加(未确认):
$md->setOption(Memcached::OPT_HASH, Memcached::HASH_CRC);
$md->setOption(Memcached::OPT_DISTRIBUTION,Memcached::DISTRIBUTION_CONSISTENT);
或(下面的方法测试可行-moqiang02)
$md->setOption(Memcached::OPT_DISTRIBUTION,Memcached::DISTRIBUTION_CONSISTENT);
$md->setOption(Memcached::OPT_LIBKETAMA_COMPATIBLE,true);
可通过Memcached::getAllKeys或Memcached::getServerByKey(尝试未成功)来查看缓存分布状况。
通过key获取value:
<?php$m = new Memcached();$m->addServers(array( array('127.0.0.1',11211,90), array('127.0.0.1',11212,10),));$m->setOption(Memcached::OPT_LIBKETAMA_COMPATIBLE,true);echo $m->get('k_70');?>
- memcached分布式部署
- memcached分布式部署
- Memcached分布式部署方案设计
- memcached分布式部署
- memcached 使用以及分布式部署
- Memcached常规应用与分布式部署方案
- .net分布式(缓存部署系统Memcached解决方案初体验)
- Memcached分布式部署方案设计(含PHP代码)
- 浅谈php-Memcached常规应用与分布式部署方案-
- memcached分布式
- Memcached分布式
- memcached分布式
- 【memcached】memcached的分布式
- [Memcached]Memcached 的分布式算法
- Memcached Session Manager(转帖,分布式应用部署又多一利器)
- 分布式缓存 - memCached Voldemort
- memcached的分布式算法
- Memcached-----分布式缓存
- 晚餐吃粗粮影响睡眠质量
- "there are stopped jobs" when you exit.
- 安卓历史版本
- Tomcat的跨区域访问问题
- HDU 2147 kiki's game(博弈论)
- memcached分布式部署
- 【LeetCode题目记录-9】排序后的数组生成平衡的二叉搜索树
- ubuntu 10.04登录界面用户管理
- hdu 5010 大搜索
- (android实战)控件选中字体颜色变色实现
- 回收页框
- 搜索(字符串暴力)
- DuiLib加载ActiveX控件崩溃
- 的施工方哈德肺结核更健康