cache

package
v1.4.28 Latest Latest
Warning

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

Go to latest
Published: Apr 29, 2026 License: MIT Imports: 13 Imported by: 0

Documentation

Overview

Package cache 缓存层 提供 Redis 和本地缓存的统一接口,支持分布式锁、防击穿、防穿透等功能

Package cache is a package that unifies the definition of caching, supporting both redis and local caching.

Package cache 缓存层 提供 Redis 和本地缓存的统一接口,支持分布式锁、防击穿、防穿透等功能

Index

Constants

View Source
const (
	// CacheNameExampleCachePrefixKeyLock cache prefix key, must end with a colon
	CacheNameExampleCachePrefixKeyLock = "lock:prefixKeyExample:"
	// CacheNameExampleCachePrefixKey 缓存名称示例数据前缀
	CacheNameExampleCachePrefixKey = "data:prefixKeyExample:"
	// CacheNameExampleExpireTime expire time
	CacheNameExampleExpireTime = 30 * time.Minute
)
View Source
const (
	// UserExampleCachePrefixKeyLock cache prefix key, must end with a colon
	UserExampleCachePrefixKeyLock = "lock:userExample:"
	// UserExampleCachePrefixKey 用户示例数据缓存前缀
	UserExampleCachePrefixKey = "data:userExample:"
	// UserExampleExpireTime expire time
	UserExampleExpireTime = 30 * time.Minute
)

Variables

This section is empty.

Functions

This section is empty.

Types

type NameExample added in v1.4.27

type NameExample interface {
	GetLoopLock(ctx context.Context, key string, options ...redsync.Option) (*redsync.Mutex, error)
	GetLock(ctx context.Context, key string, options ...redsync.Option) (*redsync.Mutex, error)
	// 封装了锁的获取、看门狗自动续期、业务执行及释放逻辑
	WatchDogLock(ctx context.Context, key string, expiry time.Duration, task func(ctx context.Context) error, options ...redsync.Option) error
	WatchDogLoopLock(ctx context.Context, key string, expiry time.Duration, task func(ctx context.Context) error, options ...redsync.Option) error

	Set(ctx context.Context, key string, data interface{}, duration time.Duration) error

	Get(ctx context.Context, key string) (interface{}, error)
	GetIDByKey(ctx context.Context, key string) (id string, err error)

	Del(ctx context.Context, key string) error
	DelByPrefix(ctx context.Context, prefix string) error
	DelByKey(ctx context.Context, key string) error

	SetPlaceholder(ctx context.Context, key string) error
	SetPlaceholderByKey(ctx context.Context, key string) error
	IsPlaceholderErr(err error) bool

	GetCacheName(ctx context.Context, keyNameExample keyTypeExample) (valueTypeExample, error)
	SetCacheName(ctx context.Context, keyNameExample keyTypeExample, data valueTypeExample, duration time.Duration) error
	DelCacheName(ctx context.Context, keyNameExample keyTypeExample) error
}

NameExample is the cache interface for cache name example

func NewNameExample added in v1.4.27

func NewNameExample(cacheType *database.CacheType) NameExample

NewNameExample new a cache

type UserExampleCache

type UserExampleCache interface {
	GetLoopLock(ctx context.Context, key string, options ...redsync.Option) (*redsync.Mutex, error)
	GetLock(ctx context.Context, key string, options ...redsync.Option) (*redsync.Mutex, error)
	// 封装了锁的获取、看门狗自动续期、业务执行及释放逻辑
	WatchDogLock(ctx context.Context, key string, expiry time.Duration, task func(ctx context.Context) error, options ...redsync.Option) error
	WatchDogLoopLock(ctx context.Context, key string, expiry time.Duration, task func(ctx context.Context) error, options ...redsync.Option) error

	Set(ctx context.Context, id uint64, data *model.UserExample, duration time.Duration) error
	SetIDByKey(ctx context.Context, key string, id uint64, duration time.Duration) error
	SetIDsByKey(ctx context.Context, key string, ids []uint64, duration time.Duration) error

	Get(ctx context.Context, id uint64) (*model.UserExample, error)
	GetIDByKey(ctx context.Context, key string) (id uint64, err error)
	GetIDsByKey(ctx context.Context, key string) (ids []uint64, err error)

	MultiGet(ctx context.Context, ids []uint64) (map[uint64]*model.UserExample, error)
	MultiSet(ctx context.Context, data []*model.UserExample, duration time.Duration) error

	Del(ctx context.Context, id uint64) error
	DelByPrefix(ctx context.Context, prefix string) error
	DelByKey(ctx context.Context, key string) error

	SetPlaceholder(ctx context.Context, id uint64) error
	SetPlaceholderByKey(ctx context.Context, key string) error
	IsPlaceholderErr(err error) bool
}

UserExampleCache cache interface

func NewUserExampleCache

func NewUserExampleCache(cacheType *database.CacheType) UserExampleCache

NewUserExampleCache new a cache

Jump to

Keyboard shortcuts

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