memcached

package
v1.5.6 Latest Latest
Warning

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

Go to latest
Published: Oct 24, 2023 License: MIT Imports: 12 Imported by: 0

README

Memcached.

Компонент, который позволяет подключаться к Memcached.
Реализует интерфейс cache.CacheInterface[[]byte], который доступен в контейнере объектов если этот компонент используется напрямую.

В пакете с компонентом так же имеется метод New, который возвращает ссылку на новый объект github.com/bradfitz/gomemcache/memcache/Client для использования его вне контейнера.

Объект конфигурации.
type Config struct {
	Hosts              []string
	MaxIdleConnections uint16
	Timeout            time.Duration
}

Описание полей:

Поле Описание Значение по умолчанию
Hosts Хосты Memcached к которым нужно подключиться, этот параметр может быть передан одним из 3-х методов:
- флаг командной строки --cache.memcached.hosts
- переменная окружения CACHE_MEMCACHED_HOSTS
- значение в конфиг файле cache.memcached.hosts
localhost:11211
MaxIdleConnections Максимальное кол. незанятых открытых соединений, этот параметр может быть передан одним из 3-х методов:
- флаг командной строки --cache.memcached.maxIdleConnections
- переменная окружения CACHE_MEMCACHED_MAXIDLECONNECTIONS
- значение в конфиг файле cache.memcached.maxIdleConnections
2
Timeout Таймаут чтения/записи, этот параметр может быть передан одним из 3-х методов:
- флаг командной строки --cache.memcached.timeout
- переменная окружения CACHE_MEMCACHED_TIMEOUT
- значение в конфиг файле cache.memcached.timeout
100ms

Компонент добавляет метрики. Подробнее о метриках https://github.com/eko/gocache.

Documentation

Index

Constants

View Source
const (
	HostsFieldName     = "cache.memcached.hosts"
	MaxIdleConnections = "cache.memcached.maxIdleConnections"
	TimeoutFieldName   = "cache.memcached.timeout"

	MaxIdleConnectionsDefault = memcache.DefaultMaxIdleConns
	TimeoutDefault            = memcache.DefaultTimeout
)

Variables

View Source
var Component = &app.Component{
	Dependencies: app.Components{
		logger.Component,
		configurator.Component,
		reConfiguration.Component,
		info.Component,
	},
	Constructor: func(container container.Container) error {
		return container.Provides(
			NewConfig,
			NewReConfigurationWithConfigurator,
			func(reConfiguration *ReConfiguration) Cache { return reConfiguration },
		)
	},
	BindFlags: func(flagSet *pflag.FlagSet, container container.Container) error {
		return container.Invoke(func(config *Config) {
			flagSet.StringSliceVar(&config.Hosts, HostsFieldName, HostsDefault, "memcached connection hosts")
			flagSet.Uint16Var(&config.MaxIdleConnections, MaxIdleConnections, MaxIdleConnectionsDefault, "maximum number of idle connections")
			flagSet.DurationVar(&config.Timeout, TimeoutFieldName, TimeoutDefault, "socket read/write timeout")
		})
	},
	Run: func(c container.Container) error {
		cache, err := container.Get[*ReConfiguration](c)
		if err != nil {
			return err
		}

		reConfiguration, err := container.Get[configurator.ReConfiguration](c)
		if err != nil {
			return err
		}

		informer, err := container.Get[logger.Informer](c)
		if err != nil {
			return err
		}

		reConfiguration.Registration(cache)
		informer.Info("cache.memcached: registration in the reConfigurator")

		info, err := container.Get[info.Info](c)
		if err != nil {
			return err
		}

		config, err := container.Get[*Config](c)
		if err != nil {
			return err
		}

		info.Registration("cache.memcached", config)

		return nil
	},
}
View Source
var HostsDefault = []string{"localhost:11211"}

Functions

func New

func New(config *Config, informer logger.Informer) *memcache.Client

func NewWithConfigurator

func NewWithConfigurator(config *Config, configurator configurator.Configurator, informer logger.Informer) *memcache.Client

Types

type Cache

type Cache interface {
	Add(item *memcache.Item) error
	Append(item *memcache.Item) error
	CompareAndSwap(item *memcache.Item) error
	Decrement(key string, delta uint64) (newValue uint64, err error)
	Delete(key string) error
	DeleteAll() error
	FlushAll() error
	Get(key string) (item *memcache.Item, err error)
	GetMulti(keys []string) (map[string]*memcache.Item, error)
	Increment(key string, delta uint64) (newValue uint64, err error)
	Ping() error
	Prepend(item *memcache.Item) error
	Replace(item *memcache.Item) error
	Set(item *memcache.Item) error
	Touch(key string, seconds int32) (err error)
}

type Config

type Config struct {
	Hosts              []string
	MaxIdleConnections uint16
	Timeout            time.Duration
}

func Configuration

func Configuration(config *Config, configurator configurator.Configurator) *Config

func NewConfig

func NewConfig() *Config

type ReConfiguration

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

func NewReConfiguration

func NewReConfiguration(informer logger.Informer, config *Config) *ReConfiguration

func NewReConfigurationWithConfigurator

func NewReConfigurationWithConfigurator(informer logger.Informer, config *Config, configurator configurator.Configurator) *ReConfiguration

func (*ReConfiguration) Add

func (reConfiguration *ReConfiguration) Add(item *memcache.Item) error

func (*ReConfiguration) Append

func (reConfiguration *ReConfiguration) Append(item *memcache.Item) error

func (*ReConfiguration) Cache

func (reConfiguration *ReConfiguration) Cache() *memcache.Client

func (*ReConfiguration) CompareAndSwap

func (reConfiguration *ReConfiguration) CompareAndSwap(item *memcache.Item) error

func (*ReConfiguration) Decrement

func (reConfiguration *ReConfiguration) Decrement(key string, delta uint64) (newValue uint64, err error)

func (*ReConfiguration) Delete

func (reConfiguration *ReConfiguration) Delete(key string) error

func (*ReConfiguration) DeleteAll

func (reConfiguration *ReConfiguration) DeleteAll() error

func (*ReConfiguration) FlushAll

func (reConfiguration *ReConfiguration) FlushAll() error

func (*ReConfiguration) Get

func (reConfiguration *ReConfiguration) Get(key string) (item *memcache.Item, err error)

func (*ReConfiguration) GetMulti

func (reConfiguration *ReConfiguration) GetMulti(keys []string) (map[string]*memcache.Item, error)

func (*ReConfiguration) Increment

func (reConfiguration *ReConfiguration) Increment(key string, delta uint64) (newValue uint64, err error)

func (*ReConfiguration) Ping

func (reConfiguration *ReConfiguration) Ping() error

func (*ReConfiguration) Prepend

func (reConfiguration *ReConfiguration) Prepend(item *memcache.Item) error

func (*ReConfiguration) ReConfiguration

func (reConfiguration *ReConfiguration) ReConfiguration(c configurator.Configurator) error

func (*ReConfiguration) Replace

func (reConfiguration *ReConfiguration) Replace(item *memcache.Item) error

func (*ReConfiguration) Set

func (reConfiguration *ReConfiguration) Set(item *memcache.Item) error

func (*ReConfiguration) Touch

func (reConfiguration *ReConfiguration) Touch(key string, seconds int32) (err error)

Jump to

Keyboard shortcuts

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