1 回答

TA貢獻(xiàn)1856條經(jīng)驗(yàn) 獲得超17個(gè)贊
Jedis 使用 Murmur2,而其他庫(kù)使用 Murmur3。
在將一些代碼從 Java/Jedis 遷移到 Golang 時(shí),我也愛(ài)上了它。
差異是由于雜音版本不同造成的。迄今為止,Jedis 使用的是 Murmur2,而上述其他庫(kù)則使用 Murmur3。
除了查看注釋/代碼之外,我還使用Murmur2 參考實(shí)現(xiàn)驗(yàn)證了這一點(diǎn)。使用相同的種子和密鑰會(huì)產(chǎn)生與 Jedis 示例完全相同的結(jié)果。
代碼片段:
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 關(guān)注
- 221 瀏覽
添加回答
舉報(bào)