Documentation
¶
Index ¶
Constants ¶
const ( // DriverFieldName имя драйвера кэша DriverFieldName = "cache.driver" // ExpirationFieldName время жизни данных по умолчанию ExpirationFieldName = "cache.expiration" )
Variables ¶
var ( // DriverDefault драйвер по умолчанию (определяется при старте) DriverDefault = "" // ExpirationDefault время жизни по умолчанию ExpirationDefault = 5 * time.Minute )
var Component = compogo.Component{ Init: compogo.StepFunc(func(container compogo.Container) error { return container.Provides( NewConfig, NewCache, ) }), BindFlags: compogo.BindFlags(func(flagSet flag.FlagSet, container compogo.Container) error { return container.Invoke(func(config *Config) { allDrivers := drivers.Keys() if len(allDrivers) == 1 { DriverDefault = allDrivers[0] } flagSet.StringVar(&config.driver, DriverFieldName, DriverDefault, fmt.Sprintf("cache driver. Available drivers: [%s]", strings.Join(allDrivers, ","))) flagSet.DurationVar(&config.Expiration, ExpirationFieldName, ExpirationDefault, "default data retention time") }) }), Configuration: compogo.StepFunc(func(container compogo.Container) error { return container.Invoke(Configuration) }), }
Component — компонент кэша для Compogo. Регистрирует конфигурацию и экземпляр кэша в DI-контейнере.
Поддерживает различные драйверы хранения (Redis, Memcached, in-memory и т.д.), которые регистрируются через Registration().
Пример подключения:
app.AddComponents(&cache.Component)
Получение кэша в компоненте:
var c cache.Cache
container.Invoke(func(cache cache.Cache) { c = cache })
c.Set(ctx, "key", []byte("value"), store.WithExpiration(time.Minute))
Functions ¶
func Registration ¶
Registration регистрирует драйвер кэша и его фабричную функцию. Должна вызываться в init() каждого пакета драйвера.
Пример регистрации Redis-драйвера:
func init() {
cache.Registration(cache.Driver("redis"), func(container compogo.Container) (store.StoreInterface, error) {
var redisClient *redis.Client
container.Invoke(func(r *redis.Client) { redisClient = r })
return redis.NewStore(redisClient), nil
})
}
Types ¶
type Cache ¶
type Cache cache.CacheInterface[[]byte]
Cache — интерфейс кэша для хранения байтовых данных. Обёртка над gocache.CacheInterface[[]byte] с поддержкой метрик Prometheus.
Используется для кэширования данных любого типа (сериализованных в JSON, Protobuf и т.д.).
Пример:
var cacheInstance cache.Cache
container.Invoke(func(c cache.Cache) { cacheInstance = c })
// Сохранение
cacheInstance.Set(ctx, "user:123", []byte(`{"name":"John"}`), store.WithExpiration(time.Minute))
// Чтение
data, err := cacheInstance.Get(ctx, "user:123")
func NewCache ¶
func NewCache(config *Config, appConfig *compogo.Config, logger compogo.Logger, container compogo.Container) (Cache, error)
NewCache создаёт новый экземпляр кэша с указанным драйвером. Автоматически добавляет метрики Prometheus для мониторинга.
Процесс создания:
- Определяет драйвер из конфигурации
- Получает фабричную функцию (getter) для этого драйвера
- Создаёт store через getter (использует DI-контейнер)
- Оборачивает store в cache с метриками
type Config ¶
type Config struct {
Driver Driver
Expiration time.Duration
// contains filtered or unexported fields
}
Config содержит конфигурацию кэша.
func Configuration ¶
func Configuration(config *Config, configurator compogo.Configurator) (*Config, error)
Configuration загружает конфигурацию из Configurator. Проверяет, что драйвер указан и зарегистрирован.