Help us shape the future of Go! Take the 2026 Go Developer Survey

consistenthash

package
v1.2.2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 5, 2025 License: Apache-2.0 Imports: 9 Imported by: 0

Documentation

Overview

Package consistenthash provides an implementation of a ring hash.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Hash

type Hash func(data []byte) uint32

Hash maps the data to a uint32 hash-ring

type Map

type Map struct {
	// contains filtered or unexported fields
}

Map tracks segments in a hash-ring, mapped to specific keys.

func New

func New(segsPerKey int, fn Hash) *Map

New constructs a new consistenthash hashring, with segsPerKey segments per added key.

func (*Map) Add

func (m *Map) Add(ownerKeys ...string)

Add adds some keys to the hashring, establishing ownership of segsPerKey segments.

func (*Map) Get

func (m *Map) Get(key string) string

Get gets the closest item in the hash to the provided key.

func (*Map) GetReplicated

func (m *Map) GetReplicated(key string, keyReplicas int) []string

GetReplicated gets the closest item in the hash to a deterministic set of keyReplicas variations of the provided key. The returned set of segment-owning keys is dedup'd, and collisions are resolved by traversing backwards in the hash-ring to find an unused owning-key.

func (*Map) IsEmpty

func (m *Map) IsEmpty() bool

IsEmpty returns true if there are no items available.

func (*Map) OwnerRangeSummary added in v1.2.0

func (m *Map) OwnerRangeSummary(ownerKey string, skipOverrideKeys int) (RangeSummary, bool)

OwnerRangeSummary provides an object that provides an efficient check as to whether a key is owned by a specific owner-key. (where owner-keys would be provided to [(*Map).Add] and a `key` would be passed to [(*Map).Get]).

skipOverrideKeys allows one to provide a broader bound on ownership that includes the removal of `skipOverrideKeys` owners.

Returns nil if the key is not present in this map.

type RangeSummary added in v1.2.0

type RangeSummary struct {
	// contains filtered or unexported fields
}

func (*RangeSummary) OwnerPossiblyOwns added in v1.2.0

func (r *RangeSummary) OwnerPossiblyOwns(key string, replicas int) bool

Directories

Path Synopsis
Package chtest provides some helper hash-functions for use with the parent consistenthash package (and galaxycache) to provide particular owners for specific keys.
Package chtest provides some helper hash-functions for use with the parent consistenthash package (and galaxycache) to provide particular owners for specific keys.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL