42 lines
1.4 KiB
Go
42 lines
1.4 KiB
Go
package store
|
|
|
|
import (
|
|
"context"
|
|
"time"
|
|
)
|
|
|
|
type Store[V any] interface {
|
|
// Get retrieves a value from store by key
|
|
Get(ctx context.Context, key string) (V, bool, error)
|
|
|
|
// Set stores a value in store with expiration
|
|
Set(ctx context.Context, key string, value V, expiration time.Duration) error
|
|
|
|
// Delete removes a key from store
|
|
Delete(ctx context.Context, key string) error
|
|
|
|
// Exists checks if a key exists in store
|
|
Exists(ctx context.Context, key string) (bool, error)
|
|
|
|
// SetNX sets a value only if the key doesn't exist (atomic operation)
|
|
SetNX(ctx context.Context, key string, value V, expiration time.Duration) (bool, error)
|
|
|
|
// HMGet retrieves multiple fields from a hash
|
|
HMGet(ctx context.Context, key string, fields ...string) (map[string]V, error)
|
|
|
|
// HGetAll retrieves all available fields from a hash
|
|
HGetAll(ctx context.Context, key string) (map[string]V, error)
|
|
|
|
// HMSet sets multiple fields in a hash with expiration
|
|
HMSet(ctx context.Context, key string, values map[string]V, expiration time.Duration) error
|
|
|
|
// SetMultiple stores multiple key-value pairs with expiration
|
|
SetMultiple(ctx context.Context, items map[string]V, expiration time.Duration) error
|
|
|
|
// DeleteMultiple removes multiple keys from store
|
|
DeleteMultiple(ctx context.Context, keys ...string) error
|
|
|
|
// DeletePattern removes all keys matching the pattern from store
|
|
DeletePattern(ctx context.Context, pattern string) error
|
|
}
|