@ceejbot/jumphash

an implementation of the jump consistent hash for node

Usage no npm install needed!

<script type="module">
  import ceejbotJumphash from 'https://cdn.skypack.dev/@ceejbot/jumphash';
</script>

README

@ceejbot/jumphash

Really remarkably trivial node bindings for Google's jump consistent hash.

Build Status on npm

Tested on nodes 4, 6, and 7. Is probably just fine on node 0.10 too.

npm install --save @ceejbot/jumphash

Usage

This module provides one function: jumphash(key, bucketCount). key must be a non-negative integer or a buffer. bucketCount must be a positive integer (0 is an invalid bucket count).

The return value is a integer in the range [0, bucketCount) that you can use as you wish. The paper linked above describes the intended data storage use.

var jumphash = require('@ceejbot/jumphash')
    assert = require('assert'),
    crypto = require('crypto');

var location = jumphash(23102, 16);
assert(location >= 0);
assert(location < 16);

var buffer = crypto
    .createHash('md5')
    .update('my-string-key-for-some-resource')
    .digest();
var location2 = jumphash(buffer, 16);

Only the first 64 bits of the buffer are considered, with the most significant bit first.

License

ISC