Documentation
¶
Index ¶
- type Builder
- func (b *Builder[T]) Build() (cache.Cache[T], error)
- func (b *Builder[T]) WithByteTransforms(ts ...ByteTransform) *Builder[T]
- func (b *Builder[T]) WithCacheMissDefaultWriteBackTTL(d time.Duration) *Builder[T]
- func (b *Builder[T]) WithCacheMissLoader(fn decorator.LoaderFn[T]) *Builder[T]
- func (b *Builder[T]) WithCodec(codec codec.Codec) *Builder[T]
- func (b *Builder[T]) WithCompression(c Compression) *Builder[T]
- func (b *Builder[T]) WithDecorators(decorators ...cache.Decorator[T]) *Builder[T]
- func (b *Builder[T]) WithFactory(factory cache.CacheFactory[T]) *Builder[T]
- func (b *Builder[T]) WithLogger(logger telemetry.Logger) *Builder[T]
- func (b *Builder[T]) WithLogicExpireBytesAdapter(enable bool) *Builder[T]
- func (b *Builder[T]) WithLogicExpireDefaultLogicTTL(d time.Duration) *Builder[T]
- func (b *Builder[T]) WithLogicExpireDefaultWriteBackTTL(d time.Duration) *Builder[T]
- func (b *Builder[T]) WithLogicExpireEnabled(enabled bool) *Builder[T]
- func (b *Builder[T]) WithLogicExpireLoader(fn decorator.LoaderFn[T]) *Builder[T]
- func (b *Builder[T]) WithMetrics(metrics telemetry.Metrics) *Builder[T]
- func (b *Builder[T]) WithNilCacheFn(fn decorator.ProtectionFn[T]) *Builder[T]
- func (b *Builder[T]) WithNilCacheWriteBackTTL(ttl time.Duration) *Builder[T]
- func (b *Builder[T]) WithObserveDecorator(d cache.Decorator[T]) *Builder[T]
- func (b *Builder[T]) WithOptions(opts ...cache.Option[T]) *Builder[T]
- func (b *Builder[T]) WithSingleflight(enable bool) *Builder[T]
- func (b *Builder[T]) WithTypeAdapter(a TypeAdapter[T]) *Builder[T]
- type ByteTransform
- type Compression
- type MultiBuilder
- func (b *MultiBuilder[T]) Build() (multicache.MultiCache[T], error)
- func (b *MultiBuilder[T]) WithErrorHandling(mode multicache.ErrorHandleMode) *MultiBuilder[T]
- func (b *MultiBuilder[T]) WithFetchPolicy(policy multicache.FetchPolicy[T]) *MultiBuilder[T]
- func (b *MultiBuilder[T]) WithLoader(fn decorator.LoaderFn[T]) *MultiBuilder[T]
- func (b *MultiBuilder[T]) WithLogger(logger telemetry.Logger) *MultiBuilder[T]
- func (b *MultiBuilder[T]) WithMetrics(metrics telemetry.Metrics) *MultiBuilder[T]
- func (b *MultiBuilder[T]) WithRequiredLoader(enabled bool) *MultiBuilder[T]
- func (b *MultiBuilder[T]) WithSingleflight(enabled bool) *MultiBuilder[T]
- func (b *MultiBuilder[T]) WithWriteBack(fn multicache.WriteBackFn[T]) *MultiBuilder[T]
- func (b *MultiBuilder[T]) WithWriteBackFilter(filter multicache.WriteBackCacheFilter[T]) *MultiBuilder[T]
- type TypeAdapter
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Builder ¶
type Builder[T any] struct { // contains filtered or unexported fields }
func NewBuilder ¶
func (*Builder[T]) WithByteTransforms ¶
func (b *Builder[T]) WithByteTransforms(ts ...ByteTransform) *Builder[T]
WithByteTransforms 追加字节级转换链(按声明顺序执行)。
func (*Builder[T]) WithCacheMissDefaultWriteBackTTL ¶
如果不调用 WithCacheMissLoader 传入回源函数的话 此设置无效
func (*Builder[T]) WithCacheMissLoader ¶
func (*Builder[T]) WithCompression ¶
func (b *Builder[T]) WithCompression(c Compression) *Builder[T]
WithCompression 以 Decorator 风格声明压缩能力,但内部会编译到 byte-stage。
func (*Builder[T]) WithDecorators ¶
WithDecorators 如果用 WithOptions 也传入了装饰器,则 WithOptions 传入的更靠外层
func (*Builder[T]) WithFactory ¶
func (b *Builder[T]) WithFactory(factory cache.CacheFactory[T]) *Builder[T]
WithFactory 显式声明使用自定义装配计划,与 staged features 互斥。
func (*Builder[T]) WithLogger ¶
func (*Builder[T]) WithLogicExpireBytesAdapter ¶
如果 T = []byte,是否启用内置的 LogicTTLBytesAdapter 适配器
启用后会在逻辑过期功能的基础上,自动将 LogicTTLValue[[]byte] 编码为 []byte 存储,格式为 [8-byte little-endian UnixNano expireAt][raw payload] 使用场景: 源数据是 []byte 使用了压缩功能,同时还想使用逻辑过期的功能,可以启用这个适配器,避免引入 codec 包和额外的编码开销。
func (*Builder[T]) WithLogicExpireDefaultLogicTTL ¶
默认设置的逻辑过期时间 需要大于等于0
func (*Builder[T]) WithLogicExpireDefaultWriteBackTTL ¶
逻辑过期回源后,回写时的物理过期时间 需要大于等于0
func (*Builder[T]) WithLogicExpireEnabled ¶
开启逻辑过期功能
func (*Builder[T]) WithLogicExpireLoader ¶
func (*Builder[T]) WithMetrics ¶
func (*Builder[T]) WithNilCacheFn ¶
func (b *Builder[T]) WithNilCacheFn(fn decorator.ProtectionFn[T]) *Builder[T]
WithNilCacheFn 启用防缓存击穿功能
func (*Builder[T]) WithNilCacheWriteBackTTL ¶
func (*Builder[T]) WithObserveDecorator ¶
WithObserveDecorator 自定义最外层进行观测的 observer 装饰层
func (*Builder[T]) WithOptions ¶
WithOptions 自定义的可选项,优先级最高
如果传入 cache.WithFactory 则会覆盖 Builder 的装配计划 如果传入 cache.WithObservable 则会覆盖 WithLogger 和 WithMetrics 的特性开启 如果传入 cache.WithDecorator 则会在 WithDecorators 的外层,观测层的内层
func (*Builder[T]) WithSingleflight ¶
给 Get GetWithTTL 开启 singleflight 功能
func (*Builder[T]) WithTypeAdapter ¶
func (b *Builder[T]) WithTypeAdapter(a TypeAdapter[T]) *Builder[T]
WithTypeAdapter 覆盖默认类型适配器。
type ByteTransform ¶
type ByteTransform func(next cache.Cache[[]byte], ob *telemetry.Observable) (cache.Cache[[]byte], error)
ByteTransform 用于构建 []byte 层能力链(压缩/加密/签名等)。
type Compression ¶
type Compression interface {
Compress(src []byte) ([]byte, error)
Decompress(src []byte) ([]byte, error)
}
Compression 定义字节压缩与解压能力。
type MultiBuilder ¶
type MultiBuilder[T any] struct { // contains filtered or unexported fields }
MultiBuilder 用于构建 MultiCache
func NewMultiBuilder ¶
func NewMultiBuilder[T any](name string, caches ...cache.Cache[T]) *MultiBuilder[T]
NewMultiBuilder 创建一个新的 MultiBuilder caches 是多级缓存的列表,优先级从前到后 默认配置时 需要使用 MultiBuilder.WithLoader 提供回源函数
默认配置为
FetchPolicy = multicache.FetchPolicySequential 顺序遍历 cache 获取,source 兜底 需要调用 MultiBuilder.WithLoader 提供回源函数 WriteBackCacheFilter = multicache.MissedCacheFilter 仅回源返回 cache.ErrNotFound 的 cache WriteBackFn = multicache.WriteBackParallel[T](time.Minute) 并行写回,同步等待,写回的ttl为一分钟 ErrorHandleMode = multicache.ErrorHandleTolerant 宽容模式 当 WriteBackFn 返回 err 时,仅记录日志
func (*MultiBuilder[T]) Build ¶
func (b *MultiBuilder[T]) Build() (multicache.MultiCache[T], error)
Build 构建 MultiCache
func (*MultiBuilder[T]) WithErrorHandling ¶
func (b *MultiBuilder[T]) WithErrorHandling(mode multicache.ErrorHandleMode) *MultiBuilder[T]
WithErrorHandling 设置错误处理模式
func (*MultiBuilder[T]) WithFetchPolicy ¶
func (b *MultiBuilder[T]) WithFetchPolicy(policy multicache.FetchPolicy[T]) *MultiBuilder[T]
WithFetchPolicy 设置查询策略
func (*MultiBuilder[T]) WithLoader ¶
func (b *MultiBuilder[T]) WithLoader(fn decorator.LoaderFn[T]) *MultiBuilder[T]
WithLoader 设置回源函数 默认配置 FetchPolicy = multicache.FetchPolicySequential 时必传 不然会运行时 panic
func (*MultiBuilder[T]) WithLogger ¶
func (b *MultiBuilder[T]) WithLogger(logger telemetry.Logger) *MultiBuilder[T]
func (*MultiBuilder[T]) WithMetrics ¶
func (b *MultiBuilder[T]) WithMetrics(metrics telemetry.Metrics) *MultiBuilder[T]
func (*MultiBuilder[T]) WithRequiredLoader ¶
func (b *MultiBuilder[T]) WithRequiredLoader(enabled bool) *MultiBuilder[T]
WithRequiredLoader 设置是否必须提供 LoaderFn。 当策略不依赖 LoaderFn 时可设置为 false。
func (*MultiBuilder[T]) WithSingleflight ¶
func (b *MultiBuilder[T]) WithSingleflight(enabled bool) *MultiBuilder[T]
WithSingleflight LoaderFn 的 singleflight 封装 默认开启
func (*MultiBuilder[T]) WithWriteBack ¶
func (b *MultiBuilder[T]) WithWriteBack(fn multicache.WriteBackFn[T]) *MultiBuilder[T]
WithWriteBack 设置回写策略
func (*MultiBuilder[T]) WithWriteBackFilter ¶
func (b *MultiBuilder[T]) WithWriteBackFilter(filter multicache.WriteBackCacheFilter[T]) *MultiBuilder[T]
WithWriteBackFilter 设置回写过滤策略