php hash分表实现方法

作者: wxfeng 分类: web前端 发布时间: 2021-09-11 16:37    阅读 16 次
/**
* $string 分表使用的字段
* $tab_count 表数量
**/
static public function getStringHash($string, $tab_count)
{
        $unsign = sprintf('%u', crc32($string));
        if ($unsign > 2147483647)  // sprintf u for 64 & 32 bit
        {
            $unsign -= 4294967296;
        }
        return abs($unsign) % $tab_count;
}

简要来说就是对$string(比如用户表的userid)做crc32的hash计算,crc32计算结果为一个10进制数,在不同bit位的操作系统下,得到的值可能会不同,所以对其进行统一的处理,然后对这个自然数进行取余计算,取余的除数就是你的分表数,比如这里为100。
这样我们就得到了一个在0-99以内的表后缀数index,然后拼接固定的表前缀user_,得到完整的分表表名user_index
之后的操作和不分表情况下的写库操作一致,将数据插入到对应的表中即可。

原文链接:https://blog.csdn.net/dengjiexian123/article/details/53860948

如果觉得我的文章对您有用,请随意赞赏。您的支持将鼓励我继续创作!

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注