@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

Package Sidebar

Install

npm i @ceejbot/jumphash

Weekly Downloads

2

Version

1.2.4

License

ISC

Last publish

Collaborators

  • ceejbot