hash_ring_ex alternatives and similar packages
Based on the "Algorithms and Data structures" category.
Alternatively, view hash_ring_ex alternatives based on common mentions on social networks and blogs.
-
exconstructor
An Elixir library for generating struct constructors that handle external data with ease. -
aja
Extension of the Elixir standard library focused on data stuctures, data manipulation and performance -
remodel
:necktie: An Elixir presenter package used to transform map structures. "ActiveModel::Serializer for Elixir" -
MapDiff
Calculates the difference between two (nested) maps, and returns a map representing the patch of changes. -
the_fuzz
String metrics and phonetic algorithms for Elixir (e.g. Dice/Sorensen, Hamming, Jaccard, Jaro, Jaro-Winkler, Levenshtein, Metaphone, N-Gram, NYSIIS, Overlap, Ratcliff/Obershelp, Refined NYSIIS, Refined Soundex, Soundex, Weighted Levenshtein) -
exmatrix
Elixir library implementing a parallel matrix multiplication algorithm and other utilities for working with matrices. Used for benchmarking computationally intensive concurrent code. -
Closure Table
Closure Table for Elixir - a simple solution for storing and manipulating complex hierarchies. -
bitmap
Bitmap implementation in Elixir using binaries and integers. Fast space efficient data structure for lookups -
paratize
Elixir library providing some handy parallel processing facilities that supports configuring number of workers and timeout.
CodeRabbit: AI Code Reviews for Developers

* Code Quality Rankings and insights are calculated and provided by Lumnify.
They vary from L1 to L5 with "L5" being the highest.
Do you think we are missing an alternative of hash_ring_ex or a related project?
README
HashRing
A consistent hash-ring implemention leveraging the excellent C hash-ring lib by Chris Moos for Elixir.
Requirements
- Elixir 0.15.1 or newer
Installation
Add HashRing as a dependency in your mix.exs
file
defp deps do
[
{hash_ring_ex: "~> 1.0"}
]
end
Then run mix deps.get
in your shell to fetch the dependencies.
Usage
Start or supervise a new HashRing with HashRing.start_link/1
or HashRing.start/1
and add some nodes
{:ok, pid} = HashRing.start_link
:ok = HashRing.add(pid, "first_node")
:ok = HashRing.add(pid, "second_node")
Then find the appropriate node for your key
{:ok, "first_node"} = HashRing.find(pid, "my_key")
Nodes can also be easily dropped
:ok = HashRing.drop(pid, "first_node")
{:ok, "second_node"} = HashRing.find(pid, "my_key")
Configuring
Started rings will use an MD5 hash function by default. In tests MD5 is on average about 25% faster than sha1. The hashing function to use can be specified as an option sent to start_link/1 or
start/1`
{:ok, md5} = HashRing.start_link(hash_func: :md5)
{:ok, sha1} = HashRing.start_link(hash_func: :sha1)
The number of replicas can be configured, too (default: 128)
{:ok, pid} = HashRing.start_link(replicas: 5)
And the standard GenServer options can be passed in, too
{:ok, pid} = HashRing.start_link(name: :my_hash_ring)
Authors
Jamie Winsor ([email protected])