Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	// ErrCacheFull is returned if Put fails due to cache being filled with pinned elements
	ErrCacheFull = errors.New("Cache capacity is fully occupied with pinned elements")
)

Functions

This section is empty.

Types

type Cache

type Cache interface {
	// Exist checks if a given key exists in the cache
	Exist(key string) bool

	// Get retrieves an element based on a key, returning nil if the element
	// does not exist
	Get(key string) interface{}

	// Put adds an element to the cache, returning the previous element
	Put(key string, value interface{}) interface{}

	// PutIfNotExist puts a value associated with a given key if it does not exist
	PutIfNotExist(key string, value interface{}) (interface{}, error)

	// Delete deletes an element in the cache
	Delete(key string)

	// Release decrements the ref count of a pinned element. If the ref count
	// drops to 0, the element can be evicted from the cache.
	Release(key string)

	// Size returns the number of entries currently stored in the Cache
	Size() int
}

    A Cache is a generalized interface to a cache. See cache.LRU for a specific implementation (bounded cache with LRU eviction)

    func New

    func New(maxSize int, opts *Options) Cache

      New creates a new cache with the given options

      func NewLRU

      func NewLRU(maxSize int) Cache

        NewLRU creates a new LRU cache of the given size, setting initial capacity to the max size

        func NewLRUWithInitialCapacity

        func NewLRUWithInitialCapacity(initialCapacity, maxSize int) Cache

          NewLRUWithInitialCapacity creates a new LRU cache with an initial capacity and a max size

          type Options

          type Options struct {
          	// TTL controls the time-to-live for a given cache entry.  Cache entries that
          	// are older than the TTL will not be returned
          	TTL time.Duration
          
          	// InitialCapacity controls the initial capacity of the cache
          	InitialCapacity int
          
          	// Pin prevents in-use objects from getting evicted
          	Pin bool
          
          	// RemovedFunc is an optional function called when an element
          	// is scheduled for deletion
          	RemovedFunc RemovedFunc
          }

            Options control the behavior of the cache

            type RemovedFunc

            type RemovedFunc func(interface{})

              RemovedFunc is a type for notifying applications when an item is scheduled for removal from the Cache. If f is a function with the appropriate signature and i is the interface{} scheduled for deletion, Cache calls go f(i)

              Source Files