什么是MurmurHash】的更多相关文章

MurmurHash算法:高运算性能,低碰撞率,由Austin Appleby创建于2008年,现已应用到Hadoop.libstdc++.nginx.libmemcached等开源系统.2011年Appleby被Google雇佣,随后Google推出其变种的CityHash算法. 官方网站:https://sites.google.com/site/murmurhash/ MurmurHash算法,自称超级快的hash算法,是FNV的4-5倍.官方数据如下: OneAtATime – 354.…
下面是摘自 Google Code 的 Murmurhash 开源项目主页上的 Murmurhash2,Nginx 就是采用的这个. uint32_t MurmurHash2 ( const void * key, int len, uint32_t seed ) { // 'm' and 'r' are mixing constants generated offline. // They're not really 'magic', they just happen to work well…
说来赶巧,之前我有16个redis集群,然后我要将某个key根据路由规则存到16个集群中的某一个上面,正巧用到了这两种哈希算法,改造完毕上线后,整体带来的效果也十分理想. 说道ketamahash,它是一致性哈希算法,一般说来都是由若干固定的虚拟节点来计算出每个虚拟节点的slots,数据存储的时候,算出key的slot值,然后存入相邻最近的虚拟节点.而murmurhash则是散列算法,由于其计算产生的结果足够剧烈,所以是目前最好的几种散列算法之一.它主要用来计算出key的slot值的.有人会问,…
https://hbase.apache.org/devapidocs/org/apache/hadoop/hbase/util/MurmurHash.html https://github.com/spaolacci/murmur3https://github.com/google/guava/blob/master/guava/src/com/google/common/hash/Hashing.java…
能够满足这样要求的哈希算法有很多,其中比较著名并且应用广泛的一个哈希算法,那就是MurmurHash 算法.尽管这个哈希算法在 2008 年才被发明出来,但现在它已经广泛应用到 Redis.MemCache.Cassandra.HBase.Lucene 等众多著名的软件中.…
public int hash(byte[] data, int length, int seed) {     int m = 0x5bd1e995;     int r = 24;     int h = seed ^ length;     int len_4 = length >> 2;     for (int i = 0; i < len_4; i++) {       int i_4 = i << 2;       int k = data[i_4 + 3];…
是一种hash方法,其实核心思想就是,将一个字符串通过多个普通hash函数映射到hash表上,然后再进行检索的时候同样计算hash函数,如果全都都hash表上出现过,那么说明有极大的可能出现过,如果没有出现那么一定没有出现过. 可以通过公式计算采取多少个普通hash函数和多大映射空间使正确率变得最低. 有一个称为万能hash函数的,看了下简介看起来很屌,所以纪录下来. //--------------------------------------------------------------…
//seed 是大质数unsigned long long MurmurHash64B ( const void * key, int len, unsigned int seed ) { const unsigned int m = 0x5bd1e995; ; unsigned int h1 = seed ^ len; unsigned ; const unsigned int * data = (const unsigned int *)key; ) { unsigned int k1 =…
一致性hash算法,参考: http://www.blogjava.net/hello-yun/archive/2012/10/10/389289.html 针对这篇文章,加入了自己的理解,在原有的代码上进行了修改. https://github.com/luoqg/my-code/blob/master/j-algorithm/src/main/java/com/luoq/algorithm/consistencyhash/ConsistencyHash.java /** * 一致性hash…
第一:Redis 是什么? Redis是基于内存.可持久化的日志型.Key-Value数据库 高性能存储系统,并提供多种语言的API. 第二:出现背景 数据结构(Data Structure)需求越来越多, 但memcache中没有, 影响开发效率 性能需求, 随着读操作的量的上升需要解决,经历的过程有: 数据库读写分离(M/S)–>数据库使用多个Slave–>增加Cache (memcache)–>转到Redis 解决写的问题: 水平拆分,对表的拆分,将有的用户放在这个表,有的用户放在…