Documentation
¶
Index ¶
- Constants
- Variables
- func Delete(ctx context.Context, client *Client, keys ...string) error
- func GetOrLoad[T any](ctx context.Context, client *Client, key string, policy GetOrLoadPolicy[T], ...) (T, error)
- type Client
- type ClientOption
- type Codec
- type GetOrLoadPolicy
- type ICache
- type JSONCodec
- type Loader
- type Metrics
- type NopMetrics
Constants ¶
View Source
const Lens scene.InfraName = "cache"
Variables ¶
View Source
var ( ErrInvalidCacheClient = _eg.CreateError(0, "invalid cache client") ErrInvalidCacheKey = _eg.CreateError(1, "invalid cache key") ErrInvalidLoader = _eg.CreateError(2, "invalid cache loader") ErrCacheRead = _eg.CreateError(3, "cache read failed") ErrCacheWrite = _eg.CreateError(4, "cache write failed") ErrCacheDelete = _eg.CreateError(5, "cache delete failed") ErrCacheEncode = _eg.CreateError(6, "cache encode failed") ErrCacheDecode = _eg.CreateError(7, "cache decode failed") )
View Source
var NoExpiration = time.Duration(-1)
Functions ¶
func GetOrLoad ¶ added in v0.3.6
func GetOrLoad[T any]( ctx context.Context, client *Client, key string, policy GetOrLoadPolicy[T], load Loader[T], ) (T, error)
GetOrLoad returns cached value first. On miss, it loads from source once per key (singleflight), writes it into cache, and returns the loaded value.
Types ¶
type Client ¶ added in v0.3.6
type Client struct {
// contains filtered or unexported fields
}
func NewClient ¶ added in v0.3.6
func NewClient(store ICache, opts ...ClientOption) *Client
type ClientOption ¶ added in v0.3.6
type ClientOption func(*Client)
func WithCodec ¶ added in v0.3.6
func WithCodec(codec Codec) ClientOption
func WithMetrics ¶ added in v0.3.6
func WithMetrics(metrics Metrics) ClientOption
func WithTTLJitter ¶ added in v0.3.6
func WithTTLJitter(ratio float64) ClientOption
WithTTLJitter configures random ttl jitter ratio in [0, 1]. Example: 0.1 means final ttl is randomized in [0.9x, 1.1x].
type GetOrLoadPolicy ¶ added in v0.3.6
type ICache ¶
type ICache interface {
scene.Named
Get(ctx context.Context, key string) (value []byte, hit bool, err error)
Set(ctx context.Context, key string, value []byte, expiration time.Duration, tags ...string) error
Delete(ctx context.Context, keys ...string) error
InvalidateTags(ctx context.Context, tags ...string) error
}
type NopMetrics ¶ added in v0.3.6
type NopMetrics struct{}
func (NopMetrics) RecordDecodeError ¶ added in v0.3.6
func (NopMetrics) RecordDecodeError(error)
func (NopMetrics) RecordDelete ¶ added in v0.3.6
func (NopMetrics) RecordDelete(time.Duration, error)
func (NopMetrics) RecordGet ¶ added in v0.3.6
func (NopMetrics) RecordGet(bool, time.Duration, error)
func (NopMetrics) RecordLoad ¶ added in v0.3.6
func (NopMetrics) RecordLoad(time.Duration, error)
Click to show internal directories.
Click to hide internal directories.