redis cluster的hash slot算法

redis cluster的hash算法简介:

redis cluster中的哈希算法是用来判断用户上传的一个key,value应该保存在哪一个节点之中(集群模式redis有多台主节点,每台主节点对应一台或多台备节点),下面先说一下redis cluster中哈希算法的规则:

之所以成为hash slot算法是因为redis cluster中有固定的16384个hash slot,这16384个slot会均匀分配到各个master上面,通过这种模式,想要判断一个key,value想要存到那一台主机上,只需要算出这个key对应的slot是哪一个,集群模式redis中的master存有自己所有的slot信息,除此还会保存其他master和其他master所有的slot信息。

hash算法:

HASH_SLOT=CRC16(key) mod 16384

对每个key值计算CRC16值,然后对16384取模,这样来获取key对应的hash slot。

向master写入数据流程:

客户端向节点发送键命令,然后这个节点通过hash算法获得这个键值属于哪一个slot,然后判断这个slot是否属于自己负责的slot,如果是自己负责的话,自己就直接执行写入操作,若果不是自己负责的话,就向客户端返回一个moved错误,让客户端选择正确的节点。

 

cluster keyslot mykey,可以查看一个key对应的hash slot是什么。

利用hash 可以手动指定key对应的slot,同一个hash tag下的key,都会在同一个hash slot中,例如,set mykey1:{100}和set mykey2{100}

你可能感兴趣的:(redis cluster的hash slot算法)