cachecloud

package
v0.1.0 Latest Latest
Warning

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

Go to latest
Published: Jul 4, 2025 License: Apache-2.0 Imports: 15 Imported by: 0

Documentation

Index

Constants

View Source
const (
	BucketTypeMem     BucketType = "mem"
	BucketTypeDistMem            = "dist-mem"
	BucketTypeRedis              = "redis"
	BucketTypeLevel2             = "level-2"
)

Variables

View Source
var CacheMiss = errors.New("cache miss")

Functions

func Cacheable

func Cacheable[T any](bucketName BucketName, cacheKey CacheKey, result *T, supplier Supplier[*T], keyAppend ...interface{}) error

Cacheable 通过指定的存储桶和缓存key,获取缓存值,如果缓存值不存在,则调用supplier获取值,并设置缓存值

func EvictCache

func EvictCache(bucketName BucketName, cacheKey CacheKey, keyAppend ...interface{}) error

EvictCache 通过指定的存储桶和缓存key,删除缓存值

func GetCacheValue

func GetCacheValue(bucketName BucketName, cacheKey CacheKey, result any, keyAppend ...interface{}) error

GetCacheValue 通过指定的存储桶和缓存key,获取缓存值

func Init

func Init(option Option, cacheConfigs ...CacheConfig)

func PutCacheValue

func PutCacheValue(bucketName BucketName, cacheKey CacheKey, data any, keyAppend ...interface{}) error

PutCacheValue 通过指定的存储桶和缓存key,设置缓存值

Types

type BucketName

type BucketName string

BucketName 存储桶名称

type BucketType

type BucketType string

BucketType 存储桶类型

type CacheBucket

type CacheBucket interface {
	// Get 获取指定key对应的值
	// result 值类型指针 缓存未命中时返回标准错误 CacheMiss
	Get(key CacheKey, result any, keyAppend ...interface{}) error

	// Put 设置key对应值
	Put(key CacheKey, data any, keyAppend ...interface{}) error

	// Evict 清除缓存
	Evict(key CacheKey, keyAppend ...interface{}) error
}

func GetBucket

func GetBucket(bucketName BucketName) CacheBucket

GetBucket 通过指定的存储桶,获取最佳匹配的存储桶实例

func GetBucketByType

func GetBucketByType(bucketName BucketName, typ BucketType) CacheBucket

GetBucketByType 通过指定的存储桶和类型,获取存储桶实例

type CacheConfig

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

CacheConfig 缓存key

func NewDistMemCacheConfig

func NewDistMemCacheConfig(name BucketName, expire time.Duration) CacheConfig

NewDistMemCacheConfig 创建一个分布式内存缓存配置

func NewLevel2CacheConfig

func NewLevel2CacheConfig(name BucketName, memExpire, redisExpire time.Duration) CacheConfig

NewLevel2CacheConfig 创建一个二级缓存配置

func NewMemCacheConfig

func NewMemCacheConfig(name BucketName, expire time.Duration) CacheConfig

NewMemCacheConfig 创建一个内存缓存配置

func NewRedisCacheConfig

func NewRedisCacheConfig(name BucketName, expire time.Duration) CacheConfig

NewRedisCacheConfig 创建一个redis缓存配置

type CacheKey

type CacheKey struct {
	// 最终key值的格式化格式 将使用 fmt.Sprintf(key.KeyFormat, keyAppend) 进行处理
	KeyFormat string
}

func NewCacheKey

func NewCacheKey(format string) CacheKey

NewCacheKey 创建一个缓存key

func (CacheKey) RawKeyString

func (c CacheKey) RawKeyString(keyAppend ...interface{}) string

RawKeyString 返回原始的key字符串

type Option

type Option struct {
	ServiceName string // 服务名称 可用于防止隔离不同服务使用相同redis出现的key冲突
	// 是否允许自动开启二级缓存
	// 启用时:如果mem缓存类型与redis缓存类型的存储桶出现相同名,那么该存储桶将自动启用二级缓存管理机制
	// 如果检测到mem缓存存储桶被适配了二级缓存机制,原始定义的mem缓存类型的存储桶将自动放弃初始化
	AutoEnable2LevelCache bool
}

type Supplier

type Supplier[T any] func() (T, bool)

Jump to

Keyboard shortcuts

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