Documentation
¶
Overview ¶
Package cache defines a generic read-result cache with per-relation invalidation. A write invalidates the relation it changed (and the database's derived entries, such as views) precisely, rather than relying on blind TTL expiry (Oracle result-cache semantics). Entries are keyed by the physical relation, not the entity, so every path to a table sees its writes.
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Cache ¶
type Cache[T any] interface { Get(ctx context.Context, k Key) (T, bool) Set(ctx context.Context, k Key, v T) error // Invalidate drops the entries reading relation of database and every // derived entry of database; an empty relation drops all of database. Invalidate(database, relation string) error }
Cache is a generic read cache with per-relation invalidation.
type Key ¶
Key identifies a cached entry: the relation it reads (Relation of Database; empty for data derived from other relations of the database, such as a view), the statement, and Scope, which separates authorization and row-level identities.
type NoopCache ¶
type NoopCache[T any] struct{}
NoopCache is a Cache that stores nothing.
func (NoopCache[T]) Invalidate ¶
Invalidate is a no-op.
type TTLCache ¶
type TTLCache[T any] struct { // contains filtered or unexported fields }
TTLCache stores values with a TTL, evaluated lazily on Get. Set removes all expired entries before evicting an arbitrary live entry to stay under the configured cap.
func NewTTLCache ¶
NewTTLCache returns a TTLCache. maxSize <= 0 uses a safe default capacity.
func (*TTLCache[T]) Invalidate ¶
Invalidate implements Cache.