ホームページ  >  記事  >  バックエンド開発  >  PHP に基づく最も単純な memcache 分散アルゴリズム

PHP に基づく最も単純な memcache 分散アルゴリズム

WBOY
WBOYオリジナル
2016-06-13 11:59:00784ブラウズ

PHP に基づいた最も単純な memcache 分散アルゴリズム

まず、コア関数はこの

関数 mHash($key){

$ md =substr(md5($key),0,8);

$seed=31;

$hash=0;

for($i=0;$i

$hash=$hash*$seed+ord( $ md5{$i});

}

return $hash & 0x7FFFFFFF;

}

class HashServer{

private $serverlist;

private $issorted=false;

function addServer($server){

$hash=mHash($server);

if(!isset($this-> ;サーバーリスト[$hash])){

$this->serverlist[$hash]=$server;

}

return true;

}

function getKeyServer($key){

$hash=mHash($key);

if(!this->issorted){

ksort ($this->serverlist,SORT_NUMERIC);

}

foreach($this->serverlist as $k=> ; $v){

if($hash>=$k) return $v;
}

return $this->serverlist[count($this->serverlist)-1];

}

}



//以下のテストを開始

$hs=new HashServer();

$hs->addServer(' 192.168 .1.1');

$hs->addServer('192.168.1.2');

$hs-> ; addServer('192.168.1.3');

echo $hs->getKeyServer('key1');

echo $hs->getKeyServer('key2');

echo $hs->getKeyServer('key3');

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。