cache

package
v0.63.0 Latest Latest
Warning

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

Go to latest
Published: Jan 14, 2023 License: MIT Imports: 3 Imported by: 0

Documentation

Overview

Package cache 缓存接口的定义

Index

Constants

View Source
const (
	Forever     = 0 //  永不过时
	OneMinute   = 60
	FiveMinutes = 5 * OneMinute
	TenMinutes  = 10 * OneMinute
	HalfHour    = 30 * OneMinute
	OneHour     = 60 * OneMinute
	HalfDay     = 12 * OneHour
	OneDay      = 24 * OneHour
	OneWeek     = 7 * OneDay
	ThirtyDays  = 30 * OneDay // 30 天
	SixtyDays   = 60 * OneDay // 60 天
	NinetyDays  = 90 * OneDay // 90 天
)

常用时间的定义

Variables

This section is empty.

Functions

func ErrCacheMiss

func ErrCacheMiss() error

ErrCacheMiss 当不存在缓存项时返回的错误

func ErrInvalidKey

func ErrInvalidKey() error

ErrInvalidKey key 的格式无效

部分适配器对 key 可能是有特殊要求的, 比如在文件系统中,可能会不允许在 key 中包含 .. 或是 / 等,碰到此类情况,可返回此错误信息。

func Marshal

func Marshal(v any) ([]byte, error)

Marshal 序列化对象

优先查看 v 是否实现了 Marshaler 接口,如果未实现, 则采用 gob 格式序列化。

func Unmarshal

func Unmarshal(bs []byte, v any) error

Types

type Cache

type Cache interface {
	// Get 获取缓存项
	//
	// 当前不存在时,返回 [ErrCacheMiss] 错误。
	// key 为缓存项的唯一 ID;
	// v 为缓存写入的地址,应该始终为指针类型;
	Get(key string, v any) error

	// Set 设置或是添加缓存项
	//
	// key 表示保存该数据的唯一 ID;
	// val 表示保存的数据对象,如果是结构体,需要所有的字段都是公开的或是实现了
	// [Marshaler] 和 [Unmarshaler] 接口,否则在 [Cache.Get] 中将失去这些非公开的字段。
	// seconds 表示过了该时间,缓存项将被回收。如果该值为 0,该值永远不会回收。
	Set(key string, val any, seconds int) error

	// Delete 删除一个缓存项
	Delete(key string) error

	// Exists 判断一个缓存项是否存在
	Exists(key string) bool
}

Cache 缓存内容的访问接口

func Prefix

func Prefix(a Cache, p string) Cache

Prefix 生成一个带有统一前缀名称的缓存访问对象

c := NewMemory(...) p := cache.Prefix(c, "prefix_") p.Get("k1") // 相当于 c.Get("prefix_k1")

type CleanableCache

type CleanableCache interface {
	Cache

	// Clean 清除所有的缓存内容
	Clean() error
}

type Driver

type Driver interface {
	CleanableCache

	// Close 关闭客户端
	Close() error
}

Driver 所有缓存驱动需要实现的接口

对于数据的序列化相关操作可以调用 MarshalUnmarshal 进行处理,当然自行处理也可以,如果需要自行处理, 需要对 MarshalerUnmarshaler 接口的数据进行处理。

type Marshaler

type Marshaler interface {
	MarshalCache() ([]byte, error)
}

Marshaler 缓存系统保存数据时采用的序列化方法

该接口不是必须的,默认会采用 gob 作为序列化方法。

type Unmarshaler

type Unmarshaler interface {
	UnmarshalCache([]byte) error
}

Marshaler 缓存系统读取数据时采用的序列化方法

该接口不是必须的,默认会采用 gob 作为序列化方法。

Jump to

Keyboard shortcuts

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