rendezvous-hash

Version, currently 0.3.14 versions

github.com/caspiano/rendezvous-hash

Rendezvous hashing for crystal

2 stars
2 dependents
License: MIT

Installation

# Add this to your shard.yml
dependencies:
  rendezvous-hash:
    github: caspiano/rendezvous-hash
    version: ~> 0.3.1

Then run:

shards install

shard.yml

Crystal
0.32.1
License
MIT
Author
Caspian Baska

Dependencies

Runtime Dependencies

  • murmur3*github: aca-labs/murmur3, branch: master

Development Dependencies

  • ameba~> 0.10.1github: crystal-ameba/amebadev

README

rendezvous-hash

Build Status

Rendezvous hashing for crystal that utilises the murmur3 hashing algorithm.

Installation

  1. Add the dependency to your shard.yml:

    dependencies:
      rendezvous-hash:
        github: caspiano/rendezvous-hash
  2. Run shards install

Usage


require "rendezvous-hash"

hash = RendezvousHash.new(nodes: ["node1", "node2", "node3"])

hash.find("device1")  # => "node3"

hash.remove("node3")  # => "node3"

hash.nodes            # => ["node1", "node2"]

hash.find("device1")  # => "node1"

hash.remove?("node3") # => nil

hash.add("node3")     # => ["node1", "node2", "node3"]

hash.find("device1")  # => "node3"

hash["device1"]  # => "node3"

Credit

Todo

  • Benchmarking
  • murmur3 seeding

Contributing

  1. Fork it
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create a new Pull Request

Contributors