@ceejbot/jumphash

1.2.4 • Public • Published

@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

/@ceejbot/jumphash/

    Package Sidebar

    Install

    npm i @ceejbot/jumphash

    Weekly Downloads

    4

    Version

    1.2.4

    License

    ISC

    Last publish

    Collaborators

    • ceejbot