core

package
v0.0.0-...-3470e27 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 16, 2026 License: MIT Imports: 10 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func IsNilMarker

func IsNilMarker(v interface{}) bool

IsNilMarker 检查值是否为空值标记

func UnwrapNilMarker

func UnwrapNilMarker(v interface{}) interface{}

UnwrapNilMarker 将空值标记解包为 nil

func WrapNilMarker

func WrapNilMarker(v interface{}) interface{}

WrapNilMarker 将 nil 值包装为空值标记

Types

type BackendFactory

type BackendFactory = backend.BackendFactory

BackendFactory 别名

type CacheBackend

type CacheBackend = backend.CacheBackend

CacheBackend 别名

type CacheConfig

type CacheConfig = backend.CacheConfig

CacheConfig 别名

func DefaultCacheConfig

func DefaultCacheConfig(name string) *CacheConfig

DefaultCacheConfig 别名

type CacheItem

type CacheItem = backend.CacheItem

CacheItem 缓存项

type CacheManager

type CacheManager interface {
	GetCache(name string) (CacheBackend, error)
	RegisterBackend(name string, factory BackendFactory) error
	Execute(ctx context.Context, meta *MethodMeta, args []reflect.Value) (interface{}, error)
	Close() error
	GetProtection() *CacheProtection
	SetProtectionConfig(config *ProtectionConfig) error
	// Invalidate 使缓存失效
	Invalidate(ctx context.Context, cache string, key string) error
}

CacheManager 缓存管理器接口

func NewCacheManager

func NewCacheManager() CacheManager

NewCacheManager 创建缓存管理器

type CacheProtection

type CacheProtection struct {
	// contains filtered or unexported fields
}

CacheProtection 缓存异常保护器

func NewCacheProtection

func NewCacheProtection(config *ProtectionConfig) *CacheProtection

NewCacheProtection 创建缓存保护器

func (*CacheProtection) ApplyAvalancheProtection

func (p *CacheProtection) ApplyAvalancheProtection(baseTTL time.Duration) time.Duration

ApplyAvalancheProtection 应用雪崩保护(计算带抖动的 TTL)

func (*CacheProtection) ApplyBreakdownProtection

func (p *CacheProtection) ApplyBreakdownProtection(ctx context.Context, key string, fn func() (interface{}, error)) (interface{}, error, bool)

ApplyBreakdownProtection 应用击穿保护(singleflight) key: 缓存键 fn: 实际的数据获取函数 返回:(结果,错误,是否从 singleflight 获取)

func (*CacheProtection) ApplyPenetrationProtection

func (p *CacheProtection) ApplyPenetrationProtection(value interface{}) (interface{}, bool)

ApplyPenetrationProtection 应用穿透保护 如果值是否为空值标记,返回 true 表示应该视为缓存未命中

func (*CacheProtection) CalculateTTLWithJitter

func (p *CacheProtection) CalculateTTLWithJitter(baseTTL time.Duration, jitterFactor float64) time.Duration

CalculateTTLWithJitter 计算带抖动的 TTL(便捷方法)

func (*CacheProtection) CancelSingleFlight

func (p *CacheProtection) CancelSingleFlight(key string)

CancelSingleFlight 取消正在进行的 singleflight 请求(通过删除 key) 注意:这不会取消正在执行的函数,只会移除 singleflight 的缓存

func (*CacheProtection) GetEmptyValueTTL

func (p *CacheProtection) GetEmptyValueTTL() time.Duration

GetEmptyValueTTL 获取空值缓存的 TTL

func (*CacheProtection) GetProtectionConfig

func (p *CacheProtection) GetProtectionConfig() *ProtectionConfig

GetProtectionConfig 获取保护配置

func (*CacheProtection) GetStats

func (p *CacheProtection) GetStats() *ProtectionStats

GetStats 获取保护统计(当前实现返回空统计,可扩展)

func (*CacheProtection) ProtectedGet

func (p *CacheProtection) ProtectedGet(
	ctx context.Context,
	key string,
	cacheGet func() (interface{}, bool, error),
	cacheMissFn func() (interface{}, error),
	cacheSet func(interface{}, time.Duration) error,
) (interface{}, error)

ProtectedGet 受保护的缓存获取操作 整合穿透保护和击穿保护

func (*CacheProtection) SingleFlightDo

func (p *CacheProtection) SingleFlightDo(key string, fn func() (interface{}, error)) (interface{}, error, bool)

SingleFlightDo 直接使用 singleflight(高级用法)

func (*CacheProtection) UnwrapFromStorage

func (p *CacheProtection) UnwrapFromStorage(value interface{}) interface{}

UnwrapFromStorage 从存储解包值

func (*CacheProtection) WrapForStorage

func (p *CacheProtection) WrapForStorage(value interface{}) interface{}

WrapForStorage 包装值用于存储(处理 nil 值)

type CacheStats

type CacheStats = backend.CacheStats

CacheStats 别名

type CacheWarmer

type CacheWarmer struct {
	// contains filtered or unexported fields
}

CacheWarmer 缓存预热器

func NewCacheWarmer

func NewCacheWarmer(manager CacheManager) *CacheWarmer

NewCacheWarmer 创建缓存预热器

func (*CacheWarmer) AddEntries

func (w *CacheWarmer) AddEntries(entries []WarmUpEntry)

AddEntries 批量添加预热条目

func (*CacheWarmer) AddEntry

func (w *CacheWarmer) AddEntry(entry WarmUpEntry)

AddEntry 添加预热条目

func (*CacheWarmer) Clear

func (w *CacheWarmer) Clear()

Clear 清空预热条目列表

func (*CacheWarmer) GetStats

func (w *CacheWarmer) GetStats() *WarmerStats

GetStats 获取预热器统计信息

func (*CacheWarmer) WarmUp

func (w *CacheWarmer) WarmUp(ctx context.Context, entries []WarmUpEntry) error

WarmUp 执行缓存预热

func (*CacheWarmer) WarmUpAll

func (w *CacheWarmer) WarmUpAll(ctx context.Context) error

WarmUpAll 预热所有已添加的条目

func (*CacheWarmer) WarmUpConcurrent

func (w *CacheWarmer) WarmUpConcurrent(ctx context.Context, entries []WarmUpEntry, concurrency int) error

WarmUpConcurrent 并发预热(推荐用于生产环境)

func (*CacheWarmer) WarmUpWithConfig

func (w *CacheWarmer) WarmUpWithConfig(ctx context.Context, entries []WarmUpEntry, config *WarmerConfig) error

WarmUpWithConfig 使用配置执行缓存预热

type LoaderFunc

type LoaderFunc func() (interface{}, error)

LoaderFunc 数据加载函数类型

type MethodMeta

type MethodMeta struct {
	CacheName, KeyExpr, TTLExpr, Condition, Unless, CacheType string
	Sync, Before                                              bool
}

MethodMeta 方法元数据

type ProtectionConfig

type ProtectionConfig struct {
	// 穿透保护配置
	EnablePenetrationProtection bool          // 是否启用穿透保护
	EmptyValueTTL               time.Duration // 空值缓存 TTL(默认 5 分钟)

	// 击穿保护配置
	EnableBreakdownProtection bool // 是否启用击穿保护(singleflight)

	// 雪崩保护配置
	EnableAvalancheProtection bool    // 是否启用雪崩保护
	TTLJitterFactor           float64 // TTL 随机偏移因子(0.0-0.5,默认 0.1 即 10%)
}

ProtectionConfig 缓存保护配置

func DefaultProtectionConfig

func DefaultProtectionConfig() *ProtectionConfig

DefaultProtectionConfig 默认保护配置

type ProtectionStats

type ProtectionStats struct {
	PenetrationBlocked int64 // 穿透拦截次数
	BreakdownMerged    int64 // 击穿合并次数
	AvalancheJittered  int64 // 雪崩抖动次数
}

ProtectionStats 保护机制统计

type StatsCounter

type StatsCounter = backend.StatsCounter

StatsCounter 统计计数器

func NewStatsCounter

func NewStatsCounter(maxSize int64) *StatsCounter

NewStatsCounter 创建统计计数器

type WarmUpBuilder

type WarmUpBuilder struct {
	// contains filtered or unexported fields
}

WarmUpBuilder 预热器构建器(流式 API)

func NewWarmUpBuilder

func NewWarmUpBuilder(manager CacheManager) *WarmUpBuilder

NewWarmUpBuilder 创建预热器构建器

func (*WarmUpBuilder) Add

func (b *WarmUpBuilder) Add(cache, key string, loader LoaderFunc, ttl time.Duration) *WarmUpBuilder

Add 添加预热条目

func (*WarmUpBuilder) AddWithTimeout

func (b *WarmUpBuilder) AddWithTimeout(cache, key string, loader LoaderFunc, ttl, timeout time.Duration) *WarmUpBuilder

AddWithTimeout 添加带超时的预热条目

func (*WarmUpBuilder) Build

func (b *WarmUpBuilder) Build() *CacheWarmer

Build 构建并返回预热器

func (*WarmUpBuilder) Execute

func (b *WarmUpBuilder) Execute(ctx context.Context, concurrency int) error

Execute 执行预热

type WarmUpEntry

type WarmUpEntry struct {
	Cache  string        // 缓存名称
	Key    string        // 缓存键
	Loader LoaderFunc    // 数据加载函数
	TTL    time.Duration // TTL
}

WarmUpEntry 预热条目

type WarmerConfig

type WarmerConfig struct {
	Concurrency  int           // 并发数(默认 1)
	Timeout      time.Duration // 单个条目超时(默认 10 秒)
	Retries      int           // 重试次数(默认 0)
	LogFailed    bool          // 记录失败日志(默认 true)
	SkipExisting bool          // 跳过已存在的缓存(默认 false)
}

WarmerConfig 预热器配置

func DefaultWarmerConfig

func DefaultWarmerConfig() *WarmerConfig

DefaultWarmerConfig 默认预热器配置

type WarmerStats

type WarmerStats struct {
	Total    int64         // 总条目数
	Success  int64         // 成功预热数
	Failed   int64         // 失败预热数
	Skipped  int64         // 跳过数(已存在)
	Duration time.Duration // 总耗时
}

WarmerStats 预热器统计

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL