对于分布式的节点,比如redis集群这样,不同机器上存储着不同的数据,我们使用hash函数建立从数据到服务器之间的一个映射关系。比如你像取模,其实也可以办到,但是如果你加了一个机器,或者是减了一个机器,那么很可能所有的数据都会找错服务器,这样就很不好。而一致性hash就可以保证当机器增加或减少时,节点之间的数据迁移只限于两个节点之间,而不会造成全局的一个错误。 其实就是按照常用的hash算法来将对应的key哈希到一个具有2的32次方个桶的空间中。这些数字首尾相连,形成一个闭合的环形。并且通过虚拟节点平衡各个机器的接收概率。当要找一个key时,把它的哈希值放到环上对应的位置,然后找到顺时针对应的那个节点就行。这样的话,当机器增加或减少也只会影响两台机器。