Consistent hashing implementation.
Add this to your Cargo.toml
:
toml
[dependencies]
ringhash = "0.1"
```rust use ringhash::Consistent;
fn main() { let c = Consistent::new(); c.add("cacheA"); c.add("cacheB"); c.add("cacheC"); let users = vec![ "usermcnulty", "userbunk", "useromar", "userbunny", "user_stringer", ]; println!("initial state [A, B, C]"); for u in users.iter() { let server = c.get(u).unwrap(); println!("{} => {}", u, server); } c.add("cacheD"); c.add("cacheE"); println!("with cacheD, cacheE added [A, B, C, D, E]"); for u in users.iter() { let server = c.get(u).unwrap(); println!("{} => {}", u, server); } c.remove("cacheC"); println!("with cacheC removed [A, B, D, E]"); for u in users.iter() { let server = c.get(u).unwrap(); println!("{} => {}", u, server); } } ```
Dual-licensed under the MIT license and the Apache License (Version 2.0).
See LICENSE-MIT and LICENSE-APACHE for details.