Documentation
¶
Index ¶
- Variables
- type Cache
- func (c *Cache[T]) Clear()
- func (c *Cache[T]) Close() error
- func (c *Cache[T]) Contains(key string) bool
- func (c *Cache[T]) Delete(key string) error
- func (c *Cache[T]) Expire(key string, ttl time.Duration) bool
- func (c *Cache[T]) Get(key string) (T, error)
- func (c *Cache[T]) Keys() []string
- func (c *Cache[T]) Len() int
- func (c *Cache[T]) Range(f func(key string, value T) bool)
- func (c *Cache[T]) Set(key string, value T, ttl ...time.Duration) error
- func (c *Cache[T]) TTL(key string) time.Duration
- type CacheWithContext
- type Config
- type Option
- func WithCleanupInterval[T any](interval time.Duration) Option[T]
- func WithDefaultTTL[T any](ttl time.Duration) Option[T]
- func WithMaxSize[T any](size int) Option[T]
- func WithOnEvict[T any](fn func(key string, value T)) Option[T]
- func WithOnHit[T any](fn func(key string)) Option[T]
- func WithOnMiss[T any](fn func(key string)) Option[T]
- func WithShards[T any](count int) Option[T]
Constants ¶
This section is empty.
Variables ¶
View Source
var ( // ErrKeyNotFound возвращается когда ключ не найден в кэше ErrKeyNotFound = errors.New("imcache: key not found") // ErrKeyExpired возвращается когда ключ найден но истек ErrKeyExpired = errors.New("imcache: key expired") // ErrCacheClosed возвращается при попытке использовать закрытый кэш ErrCacheClosed = errors.New("imcache: cache is closed") // ErrInvalidTTL возвращается при указании невалидного TTL ErrInvalidTTL = errors.New("imcache: invalid ttl") // ErrInvalidKey возвращается при указании пустого ключа ErrInvalidKey = errors.New("imcache: invalid key") // ErrShardSizeLimit возвращается при записи нового ключа в заполненный шард ErrShardSizeLimit = errors.New("imcache: cache shard is full") )
Functions ¶
This section is empty.
Types ¶
type Cache ¶
type Cache[T any] struct { // contains filtered or unexported fields }
Cache представляет in-memory кэш с шардированием
type CacheWithContext ¶
WithContext создает контекстный кэш с поддержкой отмены
func NewWithContext ¶
func NewWithContext[T any](ctx context.Context, opts ...Option[T]) *CacheWithContext[T]
NewWithContext создает кэш с контекстом
type Config ¶
type Config[T any] struct { // DefaultTTL - TTL по умолчанию для новых записей (0 = бесконечно) DefaultTTL time.Duration // CleanupInterval - интервал автоматической очистки (0 = отключено) CleanupInterval time.Duration // OnEvict - колбэк вызываемый при удалении записи OnEvict func(key string, value T) // OnMiss - колбэк вызываемый при промахе кэша OnMiss func(key string) // OnHit - колбэк вызываемый при попадании в кэш OnHit func(key string) // EnableStats - включить сбор статистики EnableStats bool // MaxSize - максимальное количество записей (0 = без ограничений) MaxSize int // ShardCount - количество шардов для уменьшения блокировок (0 = авто) ShardCount int // EnableLogging - включить логирование EnableLogging bool }
Config содержит конфигурацию кэша
func DefaultConfig ¶
DefaultConfig возвращает конфигурацию по умолчанию
type Option ¶
Option определяет функциональную опцию для конфигурации кэша
func WithCleanupInterval ¶
WithCleanupInterval устанавливает интервал очистки
func WithDefaultTTL ¶
WithDefaultTTL устанавливает TTL по умолчанию
func WithMaxSize ¶
WithMaxSize устанавливает максимальный размер кэша
func WithOnEvict ¶
WithOnEvict устанавливает колбэк при удалении
func WithOnMiss ¶
WithOnMiss устанавливает колбэк при промахе
func WithShards ¶
WithShards устанавливает количество шардов
Click to show internal directories.
Click to hide internal directories.