redis集群的Hash Tag 配置

Redis 集群没有使用一致性hash, 而是引入了 哈希槽的概念,预分好16384个桶,根据 CRC16(key) mod 16384的值,决定将一个key放到哪个桶中,每个Redis物理结点负责一部分桶的管理,当发生Redis节点的增减时,调整桶的分布即可。

为了实现将key分到相同机器,就需要相同的hash值,即相同的key,但key相同是不现实的,因为key都有不同的用途。例如user:user1:ids保存用户id,user:user1:detail保存用户的具体信息,两个key不可能同名。两个key其实有相同的地方,即user。能不能拿这一部分去计算hash呢?这就是 Hash Tag。允许用key的部分字符串来计算hash,

当一个key包含 {} 的时候,就不对整个key做hash,而仅对 {} 包括的字符串做hash。

假设hash算法为sha1。对user:{user1}:ids和user:{user1}:detail,其hash值都等同于sha1(user1)。

redis集群的Hash Tag 配置_第1张图片

你可能感兴趣的:(redis)