国产激情自拍_国产9色视频_丁香花在线电影小说观看 _久久久久国产精品嫩草影院

首頁 > 編程 > PHP > 正文

memcache一致性hash的php實現方法

2020-03-22 19:55:05
字體:
來源:轉載
供稿:網友
本文實例講述了memcache一致性hash的php實現方法。分享給大家供大家參考。具體如下:最近在看一些分布式方面的文章,所以就用php實現一致性hash來練練手,以前一般用的是最原始的hash取模做 分布式,當生產過程中添加或刪除一臺memcache都會造成數據的全部失效,一致性hash就是為了解決這個問題,把失效數據降到最低,相關資料可以 google一下!php實現效率有一定的缺失,如果要高效率,還是寫擴展比較好經測試,5個memcache,每個memcache生成100個虛擬節點,set加get1000次,與單個memcache直接set加get慢5倍,所以效率一般,有待優化!在閱讀本文之前,最好知道二分查找法。實現過程:memcache的配置 ip+端口+虛擬節點序列號 做hash,使用的是crc32,形成一個閉環。
對要操作的key進行crc32
二分法在虛擬節點環中查找最近的一個虛擬節點
從虛擬節點中提取真實的memcache ip和端口,做單例連接
復制代碼 代碼如下:
php
html' target='_blank'>class memcacheHashMap {
private $_node = array();
private $_nodeData = array();
private $_keyNode = 0;
private $_memcache = null;
//每個物理服務器生成虛擬節點個數 [注:節點數越多,cache分布的均勻性越好,同時set get操作時,也更耗資源,10臺物理服務器,采用200較為合理]
private $_virtualNodeNum = 200;
private function __construct() {
$config = array(//五個memcache服務器
'127.0.0.1:11211',
'127.0.0.1:11212',
'127.0.0.1:11213',
'127.0.0.1:11214',
'127.0.0.1:11215'
);
if (!$config) throw new Exception('Cache config NULL');
foreach ($config as $key = $value) {
for ($i = 0; $i $this- _virtualNodeNum; $i++) {
$this- _node[sprintf("%u", crc32($value . '_' . $i))] = $value . '_' . $i;//循環為每個memcache服務器創建200個虛擬節點
}
}
ksort($this- _node);//創建出來的1000個虛擬節點按照鍵名從小到大排序
}
//實例化該類
static public function getInstance() {
static $memcacheObj = null;
if (!is_object($memcacheObj)) {
$memcacheObj = new self();
}
return $memcacheObj;
}
//根據傳來的鍵查找到對應虛擬節點的位置
private function _connectMemcache($key) {
$this- _nodeData = array_keys($this- _node);//所有的虛擬節點的鍵的數組
$this- _keyNode = sprintf("%u", crc32($key));//算出鍵的hash值
$nodeKey = $this- _findServerNode();//找出對應的虛擬節點
//如果超出環,從頭再用二分法查找一個最近的,然后環的頭尾做判斷,取最接近的節點
if ($this- _keyNode end($this- _nodeData)) {
$this- _keyNode -= end($this- _nodeData);
$nodeKey2 = $this- _findServerNode();
if (abs($nodeKey2 - $this- _keyNode) abs($nodeKey - $this- _keyNode)) $nodeKey = $nodeKey2;
}
var_dump($this- _node[$nodeKey]);
list($config, $num) = explode('_', $this- _node[$nodeKey]);
if (!$config) throw new Exception('Cache config Error');
if (!isset($this- _memcache[$config])) {
$this- _memcache[$config] = new Memcache;
list($host, $port) = explode(':', $config);
$this- _memcache[$config]- connect($host, $port);
}
return $this- _memcache[$config];
}
//二分法根據給出的值找出最近的虛擬節點位置
private function _findServerNode($m = 0, $b = 0) {
$total = count($this- _nodeData);
if ($total != 0 && $b == 0) $b = $total - 1;
if ($m $b){
$avg = intval(($m+$b) / 2);
if ($this- _nodeData[$avg] == $this- _keyNode) return $this- _nodeData[$avg];
elseif ($this- _keyNode $this- _nodeData[$avg] && ($avg-1 = 0)) return $this- _findServerNode($m, $avg-1);
else return $this- _findServerNode($avg+1, $b);
}
if (abs($this- _nodeData[$b] - $this- _keyNode) abs($this- _nodeData[$m] - $this- _keyNode)) return $this- _nodeData[$b];
else return $this- _nodeData[$m];
}
public function set($key, $value, $expire = 0) {
return $this- _connectMemcache($key)- set($key, json_encode($value), 0, $expire);
}
public function add($key, $value, $expire = 0) {
return $this- _connectMemcache($key)- add($key, json_encode($value), 0, $expire);
}
public function get($key) {
return json_decode($this- _connectMemcache($key)- get($key), true);
}
public function delete($key) {
return $this- _connectMemcache($key)- delete($key);
}
}
$runData['BEGIN_TIME'] = microtime(true);
//測試一萬次set加get
for($i=0;$i 10000;$i++) {
$key = md5(mt_rand());
$b = memcacheHashMap::getInstance()- set($key, time(), 10);
}
var_dump(number_format(microtime(true) - $runData['BEGIN_TIME'],6));
$runData['BEGIN_TIME'] = microtime(true); $m= new Memcache;
$m- connect('127.0.0.1', 11211);
for($i=0;$i 10000;$i++) {
$key = md5(mt_rand());
$b = $m- set($key, time(), 0, 10);
}
var_dump(number_format(microtime(true) - $runData['BEGIN_TIME'],6));

希望本文所述對大家的php程序設計有所幫助。PHP教程

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
国产激情自拍_国产9色视频_丁香花在线电影小说观看 _久久久久国产精品嫩草影院
精灵使的剑舞无删减版在线观看| 在线观看免费观看在线91| 国产日韩欧美一区二区三区视频| 四虎久久影院| 欧美视频免费一区二区三区| а√天堂8资源在线官网| 精品精品导航| www.夜夜操.com| 国产在线免费观看| 国产网站av| 亚洲成人av在线影院| 久热免费视频| 国产视频三区| 欧美精品另类| 日本中文字幕视频在线| 国产精品第八页| 亚洲天堂久久久| 国产尤物一区二区三区| 国产www.大片在线| аⅴ成人天堂中文在线| 国产丝袜护土调教在线视频| 依依成人在线| 国产精品入口麻豆免费看| 亚洲午夜久久久久中文字幕| jizz亚洲大全| 国产日韩欧美一区二区三区视频| 伊人影院蕉久影院在线播放| 另类专区欧美| av在线free| 国产视频青青| 国产美女在线观看| 啪啪免费视频一区| 在线色视频观看| 国产丝袜在线| 国产区在线观看| 丁香视频五月| 九色福利视频| 免费在线看v| аⅴ成人天堂中文在线| 69堂视频在线观看国产| 国产精品免费视频一区一| 丁香在线视频| 国产乱视频在线观看| 欧美日韩**字幕一区| 精品久久亚洲一级α| 尤物在线视频| 18加网站在线| 国产精品一区二区资源| 福利在线视频导航| 国产主播福利在线| 国产性色视频| 精品一区二区三区在线观看l| 国产丝袜自拍| 亚洲欧洲成人| 另类综合图区| 国产精品扒开做爽爽爽的视频| 国产一级黄色片免费| 导航福利在线| 国产精品99爱免费视频| 99综合精品久久| 在线观看av的网站| 激情六月婷婷| 国产精品美女视频免费观看软件 | 国产精选在线观看| 国产天堂在线观看| 亚洲wwwwww| 天堂中文在线视频| 国产不卡视频| 美女免费视频黄| 中文字幕在线免费看| √天堂资源地址在线官网| 精品成人一区二区三区免费视频| 亚洲欧美精品中文第三| 天天操天天射天天色| 国产精品美女一区二区三区四区 | 国产九九九九| 精品成人免费自拍视频| 国产永久免费| 在线视频xx| 99热在线观看免费| 亚洲天堂久久久| 中文字幕网站视频在线| 亚洲欧美一区二区三区在线播放| 成年午夜在线| jizz在线免费观看| 精品麻豆国产| 国产人成精品| 最新中文字幕av专区| 日本视频一二三区中文字幕| 国产黄网站在线观看| 国产乱视频在线观看| 日本久久国产| 夜夜嗨yeyeh| 精品国产二区三区| 中文字幕日本在线| 国产在线观看a视频| 久热国产视频| 九九热在线观看| 超碰91在线| 牛牛精品视频在线| 久热中文字幕精品视频在线| 在线观看av网站| 亚洲综合激情六月婷婷在线观看 | 日本电影在线观看| www.狠狠操| av一本在线| 日本国产在线| 久久久久久久久亚洲精品| av手机免费观看| 亚洲精品在线播放视频| 一级黄色av| 亚洲欧美综合乱码精品成人网 | www.色婷婷| 激情丁香婷婷| 天堂中文在线视频| 国产高清视频免费最新在线| 精品国产免费观看一区| 国产对白叫床清晰在线播放| 精品欧美不卡一区二区在线观看| 在线国产福利网站| 超碰免费97在线观看| 国产麻豆精品视频一区二区| 国产午夜在线| av在线免费播放| 国产精品一区二区婷婷| 2020中文字幕在线播放| 亚洲免费网站在线观看| 国产在线高清理伦片a| 国产福利微拍精品一区二区| 日本一本久久| 国产精品9区| www.中文字幕久久久| 豆国产97在线|亚洲| 国产成人天天5g影院| 欧洲一区av| 国产精品视频白浆合集| h网址在线观看| 国产成人午夜| 中文字幕网站视频在线| 日本电影全部在线观看网站视频| 99热在线免费观看| 免费高清av| 亚洲欧美中文字幕在线观看| 国产精品一区二区婷婷| 香蕉视频在线观看www| 国产黄大片在线观看画质优化| 人人在线视频| 91欧洲在线视精品在亚洲| 国产中文字幕av| 任你操视频在线观看| 精品推荐蜜桃传媒| 国产精品视频一区二区久久| 超碰人人在线| a级片国产精品自在拍在线播放| 国产高清免费av在线| 中文字幕国产视频| 天堂资源最新版在线视频观看免费网| 亚洲an天堂an在线观看| 精品99又大又爽又硬少妇毛片| 国产精品美女视频免费观看软件 | 亚洲午夜久久久久中文字幕| 国产视频2区| 国产三级在线| 国产夫妻视频| 精品国产高清自在线一区二区三区 | 欧美日韩在线视频免费观看| 精品三级久久久久久久电影聊斋| 国产区在线观看| 2019中文字幕在线电影免费| 天堂在线中文| 国产第一页在线视频| 国产a国产a国产a| 永久免费网站在线| 天堂中文在线观看| 激情五月色综合亚洲小说| 久蕉依人在线视频| 日韩av成人| 91啦中文在线| a级片国产精品自在拍在线播放| 亚洲一区二区三区在线观看网站| 中文字幕av高清| 牛牛在线精品视频| 国产一卡2卡3卡四卡网站| 国产三级香港三韩国三级| 中文字幕在线免费视频| 国产精品冒白浆免费视频| 伊人影院在线播放| 狠狠色综合久久婷婷| 国产免费高清| 伊人免费视频| 国产卡1卡2卡三卡在线| 精品视频一二区| 黄色电影网站在线观看| 国产香蕉视频在线看| 先锋影音av中文字幕| 国产你懂的在线观看| 在线观看免费高清完整| 国产一级片在线播放| 青草av在线| 69国产精品视频|