pkg/cache/cache.go
Rama master · réplica de lectura del repositorio original.
package cache
import (
"context"
"io"
"time"
"github.com/redis/go-redis/v9"
)
// Cache is a rudimentary key/value caching store backed by redis. It offers a
// Get/Set interface as well a its gzip compressed alternative
// GetCompressed/SetCompressed
type Cache interface {
CheckStatus(ctx context.Context) (time.Duration, error)
Get(key string) ([]byte, bool)
MultiGet(keys []string) [][]byte
Keys(prefix string) []string
Clear(key string)
Set(key string, data []byte, expiration time.Duration)
SetNX(key string, data []byte, expiration time.Duration)
GetCompressed(key string) (io.Reader, bool)
SetCompressed(key string, data []byte, expiration time.Duration)
RefreshTTL(key string, expiration time.Duration)
}
type cacheEntry struct {
payload []byte
expiredAt time.Time
}
// New instantiate a Cache Client.
//
// The backend selection is done based on the `client` argument. If a client is
// given, the redis backend is chosen, if nil is provided the inmemory backend would
// be chosen.
func New(client redis.UniversalClient) Cache {
if client == nil {
return NewInMemory()
}
return NewRedis(client)
}