1、redis和hash算法的关系
主要是redis cluster的时候,对于请求,我们不能说随机的打到一台机器上,这样要是第一次写到A机器,第二次读的时候,读的是B机器,那么就会发生读不到的情况,这样缓存不就失去意义了么?

所以redis中hash算法的可以简单理解为,想办法如何让同一个请求,每一次都打到同一个机器上,不同请求分布到不同的机器上。
2、hash算法的演进
2.1 最初hash算法
简单来说,就是hash取模,假设有N台机器,那么通过:
index = hash(key) % N
计算出来的index就是机器的序号,这样做简单明了,但是也是有弊端的,那就N如果变化了,会发生一些意外情况。
假设现在有3台缓存机器,A,B,C,机器分别分布在上面,此时,C宕机了,那么所有值钱打到C上面的缓存都会找不到,假设我们发现的,手动把N调整了:
调整前:
A: key:0,3,5
B: key:1,4,7
C: key:2,5

本文探讨了redis与hash算法的关系,从最初的hash取模到一致性hash算法,再到redis特有的hash slot算法。一致性hash算法解决了节点变化时的影响,但可能导致数据倾斜;redis的hash slot算法通过16384个槽位分配数据,简化了节点增减的操作,并允许通过hash tag指定数据走向。
最低0.47元/天 解锁文章
410

被折叠的 条评论
为什么被折叠?



