package cache

import "github.com/docker/distribution/registry/storage/cache"

Package cache provides facilities to speed up access to the storage backend. Typically cache implementations deal with internal implementation details at the backend level, rather than generalized caches for distribution related interfaces. In other words, unless the cache is specific to the storage package, it belongs in another package.

Index

Variables

var ErrNotFound = fmt.Errorf("not found")

ErrNotFound is returned when a meta item is not found.

Types

type LayerInfoCache

type LayerInfoCache interface {
	// Contains returns true if the repository with name contains the layer.
	Contains(ctx context.Context, repo string, dgst digest.Digest) (bool, error)

	// Add includes the layer in the given repository cache.
	Add(ctx context.Context, repo string, dgst digest.Digest) error

	// Meta provides the location of the layer on the backend and its size. Membership of a
	// repository should be tested before using the result, if required.
	Meta(ctx context.Context, dgst digest.Digest) (LayerMeta, error)

	// SetMeta sets the meta data for the given layer.
	SetMeta(ctx context.Context, dgst digest.Digest, meta LayerMeta) error
}

LayerInfoCache is a driver-aware cache of layer metadata. Basically, it provides a fast cache for checks against repository metadata, avoiding round trips to backend storage. Note that this is different from a pure layer cache, which would also provide access to backing data, as well. Such a cache should be implemented as a middleware, rather than integrated with the storage backend.

Note that most implementations rely on the caller to do strict checks on on repo and dgst arguments, since these are mostly used behind existing implementations.

func NewInMemoryLayerInfoCache

func NewInMemoryLayerInfoCache() LayerInfoCache

NewInMemoryLayerInfoCache provides an implementation of LayerInfoCache that stores results in memory.

func NewRedisLayerInfoCache

func NewRedisLayerInfoCache(pool *redis.Pool) LayerInfoCache

NewRedisLayerInfoCache returns a new redis-based LayerInfoCache using the provided redis connection pool.

type LayerMeta

type LayerMeta struct {
	Path   string
	Length int64
}

LayerMeta describes the backend location and length of layer data.

Source Files

cache.go memory.go redis.go

Version
v2.0.0+incompatible
Published
Apr 16, 2015
Platform
js/wasm
Imports
5 packages
Last checked
28 minutes ago

Tools for package owners.