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: