首页 > 代码库 > Memcache 分布式解决方案 之 : 普通 Hash 分布

Memcache 分布式解决方案 之 : 普通 Hash 分布

<?php    /* mhash      * 其实说白了,就是为了实现返回0或1    */    function mmhash($key){        $md5  = substr(md5($key),0,8);//取该字符串的md5后的前八位        $seed = 31;//设置步长        $hash = 0;//初始值        for($i=0;$i<8;$i++){            $hash = $hash * $seed + ord($md5{$i});//ASCII 累乘        }        return ($hash & 0x7FFFFFFF) % 2;//取模返回        //0x7FFFFFFF.32位最大带符号整数    }    $configNum = mmhash(md5(time()));//随机一个字符串    $config = array(        0=>array(            ‘host‘=>‘127.0.0.1‘,            ‘port‘=>11211        ),        1=>array(            ‘host‘=>‘127.0.0.2‘,            ‘port‘=>11211        )    );    $memcache = new memcache($config[$configNum]);//实例化?>

如上,则完成了通过计算字符串的hash后,用于动态的切换memcached服务器,但是这样的办法只限于2台服务器的时候使用!