1 回答

TA贡献1856条经验 获得超17个赞
Jedis 使用 Murmur2,而其他库使用 Murmur3。
在将一些代码从 Java/Jedis 迁移到 Golang 时,我也爱上了它。
差异是由于杂音版本不同造成的。迄今为止,Jedis 使用的是 Murmur2,而上述其他库则使用 Murmur3。
除了查看注释/代码之外,我还使用Murmur2 参考实现验证了这一点。使用相同的种子和密钥会产生与 Jedis 示例完全相同的结果。
代码片段:
const char *key = "foo";
uint64_t result = MurmurHash64A(key, std::strlen(key), 0x1234ABCD);
std::cout << " result (unsigned): " << result << std::endl;
std::cout << " result (signed): " << (long) result << std::endl;
std::cout << "reversed byte order: " << __builtin_bswap64(result) << std::endl;
输出:
result (unsigned): 11382821594532591967
result (signed): -7063922479176959649
reversed byte order: 6897758107479832477
- 1 回答
- 0 关注
- 233 浏览
添加回答
举报