说来赶巧,以前我有16个redis集群,而后我要将某个key根据路由规则存到16个集群中的某一个上面,正巧用到了这两种哈希算法,改造完毕上线后,总体带来的效果也十分理想。java
说道ketamahash,它是一致性哈希算法,通常说来都是由若干固定的虚拟节点来计算出每一个虚拟节点的slots,数据存储的时候,算出key的slot值,而后存入相邻最近的虚拟节点。而murmurhash则是散列算法,因为其计算产生的结果足够剧烈,因此是目前最好的几种散列算法之一。它主要用来计算出key的slot值的。有人会问,java中的hashcode也能计算出来呀,可是hashcode计算出来的值的剧烈程度远远比不上murmurhash。拿abc和abd来讲,hashcode计算出来的差值相差不大,可是murmurhash计算出来的差值则相差甚远。redis
两者结合,能够实现出相似redis cluster使用的路由算法,且效果也是很好的。目前已知的开源中,jedis,memcache,redis等都有采用过,因此将这两种哈希算法吃透,可谓是如虎添翼。算法
学东西不要急躁,要慢,要注重质量,网络上看的,源码中读的,都属于纸上得来终觉浅的东西,必定要本身写,写完后还能写成文章讲述出来,这样,你才能算是真正的吃透了。切忌看过一点源码就高谈阔论,却不知如同浮沙筑高台,经不起推敲。网络