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台服务器的时候使用!

你可能感兴趣的:(memcache)