cache

package module
v0.6.0 Latest Latest
Warning

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

Go to latest
Published: Jan 13, 2023 License: MIT Imports: 3 Imported by: 23

README

cache codecov PkgGoDev

并入 https://github.com/issue9/web 不再独立为包

通用的缓存接口

目前支持以下组件:

名称 状态
memory 内存 memory
file 文件 file
memcached github.com/bradfitz/gomemcache memcache
redis github.com/gomodule/redigo memcache
// memory
c := memory.New()
c.Set("number", 1)
var v int
c.Get("number",&v)
print(v)

// memcached
c = memcache.New(log.New(os.Stderr, "", 0), "localhost:11211")
c.Set("number", 1)
c.Get("number", &v)
print(v)

安装

go get github.com/issue9/cache

版权

本项目采用 MIT 开源授权许可证,完整的授权说明可在 LICENSE 文件中找到。

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

View Source
var ErrCacheMiss = errors.New("cache: 未找到缓存项")

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

View Source
var ErrInvalidKey = errors.New("cache: key 的格式不符合要求")

ErrInvalidKey key 的格式无效

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

Functions

func Marshal added in v0.5.0

func Marshal(v interface{}) ([]byte, error)

Marshal 序列化对象

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

NOTE: gob 并不能序列化私有字段。

func Unmarshal added in v0.5.0

func Unmarshal(bs []byte, v interface{}) error

Types

type Access added in v0.3.0

type Access interface {
	// Get 获取缓存项
	//
	// 当前不存在时,返回 [ErrCacheMiss] 错误。
	Get(key string, v interface{}) error

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

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

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

Access 缓存内容的访问接口

func Prefix added in v0.3.0

func Prefix(p string, a Access) Access

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

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

type Cache

type Cache interface {
	Access

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

	// Close 关闭整个缓存系统
	Close() error
}

Cache 缓存的访问和控制接口

type Marshaler added in v0.5.0

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

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

type Unmarshaler added in v0.5.0

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

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

Directories

Path Synopsis
Package file 文件缓存的实现
Package file 文件缓存的实现
internal
testcase
Package testcase 提供测试用例
Package testcase 提供测试用例
Package memcache memcached 客户端的 cache 接口实现
Package memcache memcached 客户端的 cache 接口实现
Package memory 以内存形式存储缓存内容
Package memory 以内存形式存储缓存内容
Package redis redis 客户端的 cache 接口实现
Package redis redis 客户端的 cache 接口实现

Jump to

Keyboard shortcuts

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