cache

package
v1.6.0 Latest Latest
Warning

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

Go to latest
Published: Jan 4, 2024 License: Apache-2.0 Imports: 4 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Cache

type Cache interface {
	GetOrSet(k interface{}, setFn SetFn) (v interface{}, err error)
}
var NoCache Cache = &noCache{}

type ChanOnlyOne

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

func NewChanOnlyOne

func NewChanOnlyOne() *ChanOnlyOne

func (*ChanOnlyOne) Compute

func (c *ChanOnlyOne) Compute(k interface{}, fn func() (interface{}, error)) (interface{}, error)

type GetSetCache

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

func NewCache

func NewCache(size int, expiry time.Duration, jitterFn JitterFn) *GetSetCache

func (*GetSetCache) GetOrSet

func (c *GetSetCache) GetOrSet(k interface{}, setFn SetFn) (v interface{}, err error)

type JitterFn

type JitterFn func() time.Duration

func NewJitterFn

func NewJitterFn(jitter time.Duration) JitterFn

type OnlyOne

type OnlyOne interface {
	// Compute returns the value of calling fn(), but only calls fn once concurrently for
	// each k.
	Compute(k interface{}, fn func() (interface{}, error)) (interface{}, error)
}

OnlyOne ensures only one concurrent evaluation of a keyed expression.

type SetFn

type SetFn func() (v interface{}, err error)

Jump to

Keyboard shortcuts

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