缓存类

package
v0.0.0-...-2910145 Latest Latest
Warning

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

Go to latest
Published: Feb 14, 2024 License: MIT Imports: 13 Imported by: 0

Documentation

Overview

Package gcache 提供了多种用于进程的缓存管理功能。

默认情况下,它提供了一个线程安全的内存缓存适配器,用于进程中的缓存管理。

Index

Constants

View Source
const (
	DurationNoExpire = 0 // Expire 永不过期的持续时间。
)

Variables

This section is empty.

Functions

func X删除

func X删除(上下文 context.Context, 名称s []interface{}) error

删除缓存中的`keys`。

func X删除并带返回值

func X删除并带返回值(上下文 context.Context, 名称s ...interface{}) (可选值 *泛型类.Var, 错误 error)

Remove 从缓存中删除一个或多个键,并返回其对应的值。 如果提供了多个键,它将返回最后一个被删除项的值。

func X取值

func X取值(上下文 context.Context, 名称 interface{}) (*泛型类.Var, error)

Get 方法通过给定的 `key` 获取并返回关联的值。 若该 `key` 对应的值不存在,或者其值为 nil,或已过期,则返回 nil。 如果你想检查 `key` 是否存在于缓存中,最好使用 Contains 函数。

func X取值PANI

func X取值PANI(上下文 context.Context, 名称 interface{}) *泛型类.Var

MustGet 行为类似于 Get,但当发生任何错误时,它会触发panic。

func X取值或设置值

func X取值或设置值(上下文 context.Context, 名称 interface{}, 值 interface{}, 时长 time.Duration) (*泛型类.Var, error)

GetOrSet 获取并返回键`key`的值,如果`key`在缓存中不存在,则设置`key`-`value`对并返回`value`。 键值对在`duration`时间后过期。

如果`duration` == 0,则不会过期。 如果`duration` < 0 或者给定的`value`为nil,则删除`key`,但如果`value`是一个函数且函数结果为nil,则不做任何操作。

func X取值或设置值PANI

func X取值或设置值PANI(上下文 context.Context, 名称 interface{}, 值 interface{}, 时长 time.Duration) *泛型类.Var

MustGetOrSet 行为类似于 GetOrSet,但是当发生任何错误时,它会触发panic(异常)。

func X取值或设置值_函数

func X取值或设置值_函数(上下文 context.Context, 名称 interface{}, 回调函数 Func, 时长 time.Duration) (*泛型类.Var, error)

GetOrSetFunc 函数用于获取并返回 `key` 对应的值,如果 `key` 不存在于缓存中,则使用函数 `f` 的结果设置 `key` 并返回其结果。 这对键值在 `duration` 时间后将自动过期。

如果 `duration` 等于 0,则表示该键值对永不过期。 如果 `duration` 小于 0 或者给定的 `value` 为 nil,则会删除 `key`,但如果 `value` 是一个函数且函数结果为 nil,则不做任何操作。

func X取值或设置值_函数PANI

func X取值或设置值_函数PANI(上下文 context.Context, 名称 interface{}, 回调函数 Func, 时长 time.Duration) *泛型类.Var

MustGetOrSetFunc 行为类似于 GetOrSetFunc,但当发生任何错误时它会触发panic。

func X取值或设置值_并发安全函数

func X取值或设置值_并发安全函数(上下文 context.Context, 名称 interface{}, 回调函数 Func, 时长 time.Duration) (*泛型类.Var, error)

GetOrSetFuncLock 从缓存中获取并返回`key`的值,如果`key`不存在,则使用函数`f`的结果设置`key`并返回其结果。键值对在`duration`时间后过期。 如果`duration`为0,则它不会过期。 如果`duration`小于0或给定的`value`为nil,它将删除`key`,但如果`value`是一个函数且函数结果为nil,则不做任何操作。 注意,该方法与函数`GetOrSetFunc`的不同之处在于,为了保证并发安全,函数`f`在写入互斥锁内执行。

func X取值或设置值_并发安全函数PANI

func X取值或设置值_并发安全函数PANI(上下文 context.Context, 名称 interface{}, 回调函数 Func, 时长 time.Duration) *泛型类.Var

MustGetOrSetFuncLock 类似于 GetOrSetFuncLock,但如果发生任何错误,它会触发 panic。

func X取所有值

func X取所有值(上下文 context.Context) ([]interface{}, error)

Values 返回缓存中的所有值作为一个切片。

func X取所有值PANI

func X取所有值PANI(上下文 context.Context) []interface{}

MustValues 行为类似 Values,但是当发生任何错误时它会触发panic(异常)。

func X取所有键

func X取所有键(上下文 context.Context) ([]interface{}, error)

Keys 返回缓存中的所有键作为切片。

func X取所有键PANI

func X取所有键PANI(上下文 context.Context) []interface{}

MustKeys 行为类似 Keys,但当发生任何错误时会触发 panic。

func X取所有键值Map副本

func X取所有键值Map副本(上下文 context.Context) (map[interface{}]interface{}, error)

Data 返回缓存中所有键值对的副本,类型为 map。注意,此函数可能会导致大量内存使用, 因此请按需实现该函数。

func X取所有键值Map副本PANI

func X取所有键值Map副本PANI(上下文 context.Context) map[interface{}]interface{}

MustData 的行为类似于 Data,但是当发生任何错误时它会触发panic(异常)。

func X取所有键文本

func X取所有键文本(上下文 context.Context) ([]string, error)

KeyStrings 返回缓存中的所有键,以字符串切片的形式。

func X取所有键文本PANI

func X取所有键文本PANI(上下文 context.Context) []string

MustKeyStrings 行为类似 KeyStrings,但当发生任何错误时,它会引发 panic。

func X取数量

func X取数量(上下文 context.Context) (int, error)

Size 返回缓存中的项目数量。

func X取数量PANI

func X取数量PANI(上下文 context.Context) int

MustSize 的行为类似于 Size,但如果发生任何错误,它会触发 panic。

func X取过期时间

func X取过期时间(上下文 context.Context, 名称 interface{}) (time.Duration, error)

GetExpire 从缓存中检索并返回`key`的过期时间。

注意: 如果`key`永不过期,则返回0。 如果`key`在缓存中不存在,则返回-1。

func X取过期时间PANI

func X取过期时间PANI(上下文 context.Context, 名称 interface{}) time.Duration

MustGetExpire 的行为类似于 GetExpire,但是当发生任何错误时,它会触发panic。

func X是否存在

func X是否存在(上下文 context.Context, 名称 interface{}) (bool, error)

Contains 检查并返回 true,如果 `key` 存在于缓存中;否则返回 false。

func X是否存在PANI

func X是否存在PANI(上下文 context.Context, 名称 interface{}) bool

MustContains 行为类似于 Contains,但当发生任何错误时,它会触发panic(异常退出)。

func X更新值

func X更新值(上下文 context.Context, 名称 interface{}, 值 interface{}) (旧值 *泛型类.Var, 是否存在 bool, 错误 error)

Update 更新`key`的值,但不改变其过期时间,并返回旧值。 返回的布尔值`exist`,如果`key`在缓存中不存在,则为false。

如果给定的`value`为nil,则删除`key`。 若`key`在缓存中不存在,则不做任何操作。

func X更新过期时间

func X更新过期时间(上下文 context.Context, 名称 interface{}, 时长 time.Duration) (旧过期时长 time.Duration, 错误 error)

UpdateExpire 更新键 `key` 的过期时间,并返回旧的过期持续时长值。

若 `key` 不存在于缓存中,则返回 -1 并不做任何操作。 若 `duration` 小于 0,则删除 `key`。

func X设置Map

func X设置Map(上下文 context.Context, 值 map[interface{}]interface{}, 时长 time.Duration) error

SetMap 批量设置缓存,通过 `data` 参数中的键值对进行设置,并在 `duration` 时间后过期。

如果 `duration` == 0,则表示永不过期。 如果 `duration` < 0 或者给定的 `value` 为 nil,则会删除 `data` 中的键。

func X设置值

func X设置值(上下文 context.Context, 名称 interface{}, 值 interface{}, 时长 time.Duration) error

Set 通过 `key`-`value` 对设置缓存,该对在 `duration` 后过期。

如果 `duration` == 0,则永不过期。 如果 `duration` < 0 或提供的 `value` 为 nil,则删除 `data` 的键。

func X设置值并跳过已存在

func X设置值并跳过已存在(上下文 context.Context, 名称 interface{}, 值 interface{}, 时长 time.Duration) (bool, error)

SetIfNotExist 若`key`不存在于缓存中,则设置带有`key`-`value`对的缓存,该对在`duration`后过期。 如果`key`在缓存中不存在,它将返回true,并成功将`value`设置到缓存中,否则返回false。

如果`duration` == 0,则不会设置过期时间。 如果`duration` < 0 或给定的`value`为nil,则删除`key`。

func X设置值并跳过已存在_函数

func X设置值并跳过已存在_函数(上下文 context.Context, 名称 interface{}, 回调函数 Func, 时长 time.Duration) (bool, error)

SetIfNotExistFunc 函数用于设置 `key` 为函数 `f` 的计算结果,并在 `key` 不存在于缓存中时返回 true, 否则如果 `key` 已存在,则不做任何操作并返回 false。

参数 `value` 可以是类型 `func() interface{}`,但如果其结果为 nil,则该函数不会执行任何操作。

如果 `duration` == 0,则不设置过期时间。 如果 `duration` < 0 或给定的 `value` 为 nil,则会删除 `key`。

func X设置值并跳过已存在_并发安全函数

func X设置值并跳过已存在_并发安全函数(上下文 context.Context, 名称 interface{}, 回调函数 Func, 时长 time.Duration) (bool, error)

SetIfNotExistFuncLock 将通过函数 `f` 计算的结果设置为 `key` 的值,并在以下情况下返回 true: 1. 如果 `key` 不存在于缓存中,则设置并返回 true。 2. 否则,如果 `key` 已经存在,则不做任何操作并返回 false。 若 `duration` 等于 0,则不设置过期时间。 若 `duration` 小于 0 或提供的 `value` 为 nil,则删除 `key`。 注意,此方法与函数 `SetIfNotExistFunc` 的不同之处在于, 函数 `f` 在写入互斥锁保护下执行,以确保并发安全。

Types

type Adapter

type Adapter interface {
	// Set 用 `key`-`value` 对设置缓存,该对在 `duration` 后过期。
	//
	// 如果 `duration` == 0,则永不过期。
	// 如果 `duration` < 0 或给定的 `value` 为 nil,则会删除 `data` 的键。
	X设置值(上下文 context.Context, 名称 interface{}, 值 interface{}, 时长 time.Duration) error

	// SetMap 批量设置缓存,通过 `data` 参数中的键值对进行设置,并在 `duration` 时间后过期。
	//
	// 如果 `duration` == 0,则表示永不过期。
	// 如果 `duration` < 0 或者给定的 `value` 为 nil,则表示删除 `data` 中的相应键。
	X设置Map(上下文 context.Context, 值 map[interface{}]interface{}, 时长 time.Duration) error

	// SetIfNotExist 如果`key`不存在于缓存中,则设置带有`key`-`value`对的缓存,并在`duration`后过期。
	// 如果`key`在缓存中不存在,它将返回true,并成功将`value`设置到缓存中,否则返回false。
	//
	// 如果`duration` == 0,则不会过期。
	// 如果`duration` < 0 或给定的`value`为nil,则删除`key`。
	X设置值并跳过已存在(上下文 context.Context, 名称 interface{}, 值 interface{}, 时长 time.Duration) (ok bool, err error)

	// SetIfNotExistFunc 设置键`key`为函数`f`的结果,并在`key`不存在于缓存中时返回true,
	// 否则如果`key`已存在,则不做任何操作并返回false。
	//
	// 参数`value`可以是`func() interface{}`类型,但如果其结果为nil,则不会执行任何操作。
	//
	// 如果`duration` == 0,则不设置过期时间。
	// 如果`duration` < 0 或给定的`value`为nil,则会删除`key`。
	X设置值并跳过已存在_函数(上下文 context.Context, 名称 interface{}, 回调函数 Func, 时长 time.Duration) (ok bool, err error)

	// SetIfNotExistFuncLock 将通过函数 `f` 计算得到的结果设置为 `key` 的值,并在以下情况下返回 true:
	// 如果 `key` 不存在于缓存中。如果 `key` 已经存在,则不做任何操作并返回 false。
	//
	// 当 `duration` 等于 0 时,它不会设置过期时间。
	// 如果 `duration` 小于 0 或者给定的 `value` 是 nil,则会删除 `key`。
	//
	// 注意,该函数与 `SetIfNotExistFunc` 函数的不同之处在于,
	// 为了保证并发安全性,函数 `f` 在写入互斥锁内执行。
	X设置值并跳过已存在_并发安全函数(上下文 context.Context, 名称 interface{}, 回调函数 Func, 时长 time.Duration) (ok bool, err error)

	// Get 方法用于获取并返回给定`key`关联的值。
	// 若该键不存在,或者其对应的值为nil,或者已过期,则返回nil。
	// 如果你想检查`key`是否存在于缓存中,最好使用Contains函数。
	X取值(上下文 context.Context, 名称 interface{}) (*泛型类.Var, error)

	// GetOrSet 函数用于检索并返回键 `key` 对应的值,如果 `key` 不存在于缓存中,则设置 `key`-`value` 键值对,并返回 `value`。该键值对在 `duration` 时间后过期。
	// 如果 `duration` 等于 0,则表示永不过期。
	// 如果 `duration` 小于 0 或提供的 `value` 为 nil,则会删除 `key`,但如果 `value` 是一个函数且函数结果为 nil,则不做任何操作。
	X取值或设置值(上下文 context.Context, 名称 interface{}, 值 interface{}, 时长 time.Duration) (result *泛型类.Var, err error)

	// GetOrSetFunc 函数用于获取并返回 `key` 对应的值,如果 `key` 不存在于缓存中,则使用函数 `f` 的结果设置 `key` 并返回其结果。
	// 这对键值对将在 `duration` 时间后过期。
	//
	// 若 `duration` 等于 0,则表示永不过期。
	// 若 `duration` 小于 0 或提供的 `value` 为 nil,则会删除 `key`,但如果 `value` 是一个函数且函数结果为 nil,则不做任何操作。
	X取值或设置值_函数(上下文 context.Context, 名称 interface{}, 回调函数 Func, 时长 time.Duration) (result *泛型类.Var, err error)

	// GetOrSetFuncLock 从缓存中获取并返回`key`的值,如果`key`不存在,则使用函数`f`的结果设置`key`并返回其结果。键值对在`duration`后过期。
	//
	// 如果`duration` == 0,则不会过期。
	// 如果`duration` < 0 或给定的`value`为 nil,则删除`key`,但如果`value`是一个函数且函数结果为 nil,则不做任何操作。
	//
	// 注意,它与函数`GetOrSetFunc`的不同之处在于,为了并发安全的目的,函数`f`在写入互斥锁内执行。
	X取值或设置值_并发安全函数(上下文 context.Context, 名称 interface{}, 回调函数 Func, 时长 time.Duration) (result *泛型类.Var, 错误 error)

	// Contains 检查并返回 true 如果 `key` 存在于缓存中,否则返回 false。
	X是否存在(上下文 context.Context, 名称 interface{}) (bool, error)

	// Size 返回缓存中的项目数量。
	X取数量(上下文 context.Context) (数量 int, 错误 error)

	// Data 返回缓存中所有键值对的副本,类型为 map 类型。
	// 注意,此函数可能会导致大量内存使用,如有必要请自行实现该函数。
	X取所有键值Map副本(上下文 context.Context) (map值 map[interface{}]interface{}, 错误 error)

	// Keys 返回缓存中的所有键作为切片。
	X取所有键(上下文 context.Context) (名称数组 []interface{}, 错误 error)

	// Values 返回缓存中的所有值作为一个切片。
	X取所有值(上下文 context.Context) (值数组 []interface{}, 错误 error)

	// Update 更新`key`的值而不改变其过期时间,并返回旧值。
	// 返回的布尔值`exist`,若`key`在缓存中不存在则为false。
	//
	// 若给出的`value`为nil,则会删除`key`。
	// 若`key`在缓存中不存在,则不做任何操作。
	X更新值(上下文 context.Context, 名称 interface{}, 值 interface{}) (旧值 *泛型类.Var, 是否存在 bool, 错误 error)

	// UpdateExpire 更新键 `key` 的过期时间,并返回旧的过期持续时间值。
	//
	// 如果 `key` 不存在于缓存中,则返回 -1 并不做任何操作。
	// 若 `duration` 小于 0,则会删除 `key`。
	X更新过期时间(上下文 context.Context, 名称 interface{}, 时长 time.Duration) (旧过期时长 time.Duration, 错误 error)

	// GetExpire 从缓存中检索并返回`key`的过期时间。
	//
	// 注意:
	// 如果`key`永不过期,则返回0。
	// 如果`key`在缓存中不存在,则返回-1。
	X取过期时间(上下文 context.Context, 名称 interface{}) (time.Duration, error)

	// Remove 从缓存中删除一个或多个键,并返回其对应的值。
	// 如果提供了多个键,它将返回最后被删除项的值。
	X删除并带返回值(上下文 context.Context, 名称s ...interface{}) (值 *泛型类.Var, 错误 error)

	// Clear 清除缓存中的所有数据。
	// 注意:该函数较为敏感,应谨慎使用。
	X清空(上下文 context.Context) error

	// Close 在必要时关闭缓存。
	X关闭(上下文 context.Context) error
}

Adapter 是缓存功能的核心适配器实现。

注意:实现者自身应确保这些函数的并发安全性。

func NewAdapterRedis

func NewAdapterRedis(redis *redis类.Redis) Adapter

NewAdapterRedis 创建并返回一个新的内存缓存对象。

func X创建内存适配器

func X创建内存适配器(淘汰数量 ...int) Adapter

NewAdapterMemory 创建并返回一个新的内存缓存对象。

type AdapterMemory

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

AdapterMemory 是一个使用内存实现的适配器。

func (*AdapterMemory) X关闭

func (c *AdapterMemory) X关闭(上下文 context.Context) error

Close 关闭缓存。

func (*AdapterMemory) X删除并带返回值

func (c *AdapterMemory) X删除并带返回值(上下文 context.Context, 名称s ...interface{}) (*泛型类.Var, error)

Remove 从缓存中删除一个或多个键,并返回其对应的值。 如果提供了多个键,它将返回最后一个被删除项的值。

func (*AdapterMemory) X取值

func (c *AdapterMemory) X取值(上下文 context.Context, 名称 interface{}) (*泛型类.Var, error)

Get 方法通过给定的 `key` 获取并返回关联的值。 若该 `key` 对应的值不存在,或者其值为 nil,或已过期,则返回 nil。 如果你想检查 `key` 是否存在于缓存中,最好使用 Contains 函数。

func (*AdapterMemory) X取值或设置值

func (c *AdapterMemory) X取值或设置值(上下文 context.Context, 名称 interface{}, 值 interface{}, 时长 time.Duration) (*泛型类.Var, error)

GetOrSet 获取并返回键`key`的值,如果`key`在缓存中不存在,则设置`key`-`value`对并返回`value`。 键值对在`duration`时间后过期。

如果`duration` == 0,则不会过期。 如果`duration` < 0 或者给定的`value`为nil,则删除`key`,但如果`value`是一个函数且函数结果为nil,则不做任何操作。

func (*AdapterMemory) X取值或设置值_函数

func (c *AdapterMemory) X取值或设置值_函数(上下文 context.Context, 名称 interface{}, 回调函数 Func, 时长 time.Duration) (*泛型类.Var, error)

GetOrSetFunc 函数用于获取并返回 `key` 对应的值,如果 `key` 不存在于缓存中,则使用函数 `f` 的结果设置 `key` 并返回其结果。 这对键值在 `duration` 时间后将自动过期。

如果 `duration` 等于 0,则表示该键值对永不过期。 如果 `duration` 小于 0 或者给定的 `value` 为 nil,则会删除 `key`,但如果 `value` 是一个函数且函数结果为 nil,则不做任何操作。

func (*AdapterMemory) X取值或设置值_并发安全函数

func (c *AdapterMemory) X取值或设置值_并发安全函数(上下文 context.Context, 名称 interface{}, 回调函数 Func, 时长 time.Duration) (*泛型类.Var, error)

GetOrSetFuncLock 从缓存中获取并返回`key`的值,如果`key`不存在,则使用函数`f`的结果设置`key`并返回其结果。键值对在`duration`时间后过期。 如果`duration`为0,则它不会过期。 如果`duration`小于0或给定的`value`为nil,它将删除`key`,但如果`value`是一个函数且函数结果为nil,则不做任何操作。 注意,该方法与函数`GetOrSetFunc`的不同之处在于,为了保证并发安全,函数`f`在写入互斥锁内执行。

func (*AdapterMemory) X取所有值

func (c *AdapterMemory) X取所有值(上下文 context.Context) ([]interface{}, error)

Values 返回缓存中的所有值作为一个切片。

func (*AdapterMemory) X取所有键

func (c *AdapterMemory) X取所有键(上下文 context.Context) ([]interface{}, error)

Keys 返回缓存中的所有键作为切片。

func (*AdapterMemory) X取所有键值Map副本

func (c *AdapterMemory) X取所有键值Map副本(上下文 context.Context) (map[interface{}]interface{}, error)

Data 返回缓存中所有键值对的副本,类型为 map。

func (*AdapterMemory) X取数量

func (c *AdapterMemory) X取数量(上下文 context.Context) (数量 int, 错误 error)

Size 返回缓存的大小。

func (*AdapterMemory) X取过期时间

func (c *AdapterMemory) X取过期时间(上下文 context.Context, 名称 interface{}) (time.Duration, error)

GetExpire 从缓存中检索并返回`key`的过期时间。

注意: 如果`key`永不过期,则返回0。 如果`key`在缓存中不存在,则返回-1。

func (*AdapterMemory) X是否存在

func (c *AdapterMemory) X是否存在(上下文 context.Context, 名称 interface{}) (bool, error)

Contains 检查并返回 true,如果 `key` 存在于缓存中;否则返回 false。

func (*AdapterMemory) X更新值

func (c *AdapterMemory) X更新值(上下文 context.Context, 名称 interface{}, 值 interface{}) (旧值 *泛型类.Var, 是否已存在 bool, 错误 error)

Update 更新`key`的值,但不改变其过期时间,并返回旧值。 返回的布尔值`exist`,如果`key`在缓存中不存在,则为false。

如果给定的`value`为nil,则删除`key`。 若`key`在缓存中不存在,则不做任何操作。

func (*AdapterMemory) X更新过期时间

func (c *AdapterMemory) X更新过期时间(上下文 context.Context, 名称 interface{}, 时长 time.Duration) (旧过期时长 time.Duration, 错误 error)

UpdateExpire 更新键 `key` 的过期时间,并返回旧的过期持续时长值。

若 `key` 不存在于缓存中,则返回 -1 并不做任何操作。 若 `duration` 小于 0,则删除 `key`。

func (*AdapterMemory) X清空

func (c *AdapterMemory) X清空(上下文 context.Context) error

Clear 清除缓存中的所有数据。 注意:此函数较为敏感,应谨慎使用。

func (*AdapterMemory) X设置Map

func (c *AdapterMemory) X设置Map(上下文 context.Context, 值 map[interface{}]interface{}, 时长 time.Duration) error

SetMap 批量设置缓存,通过 `data` 参数中的键值对进行设置,并在 `duration` 时间后过期。

如果 `duration` == 0,则表示永不过期。 如果 `duration` < 0 或者给定的 `value` 为 nil,则会删除 `data` 中的键。

func (*AdapterMemory) X设置值

func (c *AdapterMemory) X设置值(上下文 context.Context, 名称 interface{}, 值 interface{}, 时长 time.Duration) error

Set 通过 `key`-`value` 对设置缓存,该对在 `duration` 后过期。

如果 `duration` == 0,则永不过期。 如果 `duration` < 0 或提供的 `value` 为 nil,则删除 `data` 的键。

func (*AdapterMemory) X设置值并跳过已存在

func (c *AdapterMemory) X设置值并跳过已存在(上下文 context.Context, 名称 interface{}, 值 interface{}, 时长 time.Duration) (bool, error)

SetIfNotExist 若`key`不存在于缓存中,则设置带有`key`-`value`对的缓存,该对在`duration`后过期。 如果`key`在缓存中不存在,它将返回true,并成功将`value`设置到缓存中,否则返回false。

如果`duration` == 0,则不会设置过期时间。 如果`duration` < 0 或给定的`value`为nil,则删除`key`。

func (*AdapterMemory) X设置值并跳过已存在_函数

func (c *AdapterMemory) X设置值并跳过已存在_函数(上下文 context.Context, 名称 interface{}, 回调函数 Func, 时长 time.Duration) (bool, error)

SetIfNotExistFunc 函数用于设置 `key` 为函数 `f` 的计算结果,并在 `key` 不存在于缓存中时返回 true, 否则如果 `key` 已存在,则不做任何操作并返回 false。

参数 `value` 可以是类型 `func() interface{}`,但如果其结果为 nil,则该函数不会执行任何操作。

如果 `duration` == 0,则不设置过期时间。 如果 `duration` < 0 或给定的 `value` 为 nil,则会删除 `key`。

func (*AdapterMemory) X设置值并跳过已存在_并发安全函数

func (c *AdapterMemory) X设置值并跳过已存在_并发安全函数(上下文 context.Context, 名称 interface{}, 回调函数 Func, 时长 time.Duration) (bool, error)

SetIfNotExistFuncLock 将通过函数 `f` 计算的结果设置为 `key` 的值,并在以下情况下返回 true: 1. 如果 `key` 不存在于缓存中,则设置并返回 true。 2. 否则,如果 `key` 已经存在,则不做任何操作并返回 false。 若 `duration` 等于 0,则不设置过期时间。 若 `duration` 小于 0 或提供的 `value` 为 nil,则删除 `key`。 注意,此方法与函数 `SetIfNotExistFunc` 的不同之处在于, 函数 `f` 在写入互斥锁保护下执行,以确保并发安全。

type AdapterRedis

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

AdapterRedis 是使用 Redis 服务器实现的 gcache 适配器。

func (*AdapterRedis) X关闭

func (c *AdapterRedis) X关闭(上下文 context.Context) error

Close 关闭缓存。

func (*AdapterRedis) X删除并带返回值

func (c *AdapterRedis) X删除并带返回值(上下文 context.Context, 名称s ...interface{}) (最后一个删除值 *泛型类.Var, 错误 error)

Remove 从缓存中删除一个或多个键,并返回其对应的值。 如果提供了多个键,它将返回被删除的最后一个项目的值。

func (*AdapterRedis) X取值

func (c *AdapterRedis) X取值(上下文 context.Context, 名称 interface{}) (*泛型类.Var, error)

Get 函数根据给定的 <key> 获取并返回其关联的值。 如果该键不存在,或者其对应的值为 nil,则返回 nil。

func (*AdapterRedis) X取值或设置值

func (c *AdapterRedis) X取值或设置值(上下文 context.Context, 名称 interface{}, 值 interface{}, 时长 time.Duration) (结果 *泛型类.Var, 错误 error)

GetOrSet 获取并返回键`key`的值,如果`key`在缓存中不存在,则设置`key`-`value`对并返回`value`。 键值对在`duration`时间后过期。

如果`duration` == 0,则不会过期。 如果`duration` < 0 或者给定的`value`为nil,则删除`key`,但如果`value`是一个函数且函数结果为nil,则不做任何操作。

func (*AdapterRedis) X取值或设置值_函数

func (c *AdapterRedis) X取值或设置值_函数(上下文 context.Context, 名称 interface{}, 回调函数 Func, 时长 time.Duration) (结果 *泛型类.Var, 错误 error)

GetOrSetFunc 函数用于获取并返回 `key` 对应的值,如果 `key` 不存在于缓存中,则使用函数 `f` 的结果设置 `key` 并返回其结果。 这对键值在 `duration` 时间后将自动过期。

如果 `duration` 等于 0,则表示该键值对永不过期。 如果 `duration` 小于 0 或者给定的 `value` 为 nil,则会删除 `key`,但如果 `value` 是一个函数且函数结果为 nil,则不做任何操作。

func (*AdapterRedis) X取值或设置值_并发安全函数

func (c *AdapterRedis) X取值或设置值_并发安全函数(上下文 context.Context, 名称 interface{}, 回调函数 Func, 时长 time.Duration) (结果 *泛型类.Var, 错误 error)

GetOrSetFuncLock 从缓存中获取并返回`key`的值,如果`key`不存在,则使用函数`f`的结果设置`key`并返回其结果。键值对在`duration`时间后过期。 如果`duration`为0,则它不会过期。 如果`duration`小于0或给定的`value`为nil,它将删除`key`,但如果`value`是一个函数且函数结果为nil,则不做任何操作。 注意,该方法与函数`GetOrSetFunc`的不同之处在于,为了保证并发安全,函数`f`在写入互斥锁内执行。

func (*AdapterRedis) X取所有值

func (c *AdapterRedis) X取所有值(上下文 context.Context) ([]interface{}, error)

Values 返回缓存中的所有值作为一个切片。

func (*AdapterRedis) X取所有键

func (c *AdapterRedis) X取所有键(上下文 context.Context) ([]interface{}, error)

Keys 返回缓存中的所有键作为切片。

func (*AdapterRedis) X取所有键值Map副本

func (c *AdapterRedis) X取所有键值Map副本(上下文 context.Context) (map[interface{}]interface{}, error)

Data 返回缓存中所有键值对的副本,类型为 map。注意,此函数可能会导致大量内存使用, 因此请按需实现该函数。

func (*AdapterRedis) X取数量

func (c *AdapterRedis) X取数量(上下文 context.Context) (数量 int, 错误 error)

Size 返回缓存中的项目数量。

func (*AdapterRedis) X取过期时间

func (c *AdapterRedis) X取过期时间(上下文 context.Context, 名称 interface{}) (time.Duration, error)

GetExpire 从缓存中检索并返回`key`的过期时间。

注意: 如果`key`永不过期,则返回0。 如果`key`在缓存中不存在,则返回-1。

func (*AdapterRedis) X是否存在

func (c *AdapterRedis) X是否存在(上下文 context.Context, 名称 interface{}) (bool, error)

Contains 检查并返回 true,如果 `key` 存在于缓存中;否则返回 false。

func (*AdapterRedis) X更新值

func (c *AdapterRedis) X更新值(上下文 context.Context, 名称 interface{}, 值 interface{}) (旧值 *泛型类.Var, 是否存在 bool, 错误 error)

Update 更新`key`的值,但不改变其过期时间,并返回旧值。 返回的布尔值`exist`,如果`key`在缓存中不存在,则为false。

如果给定的`value`为nil,则删除`key`。 若`key`在缓存中不存在,则不做任何操作。

func (*AdapterRedis) X更新过期时间

func (c *AdapterRedis) X更新过期时间(上下文 context.Context, 名称 interface{}, 时长 time.Duration) (旧过期时长 time.Duration, 错误 error)

UpdateExpire 更新键 `key` 的过期时间,并返回旧的过期持续时长值。

若 `key` 不存在于缓存中,则返回 -1 并不做任何操作。 若 `duration` 小于 0,则删除 `key`。

func (*AdapterRedis) X清空

func (c *AdapterRedis) X清空(上下文 context.Context) (错误 error)

Clear 清除缓存中的所有数据。 注意:此函数较为敏感,应谨慎使用。 它在 Redis 服务器中使用了 `FLUSHDB` 命令,该命令可能在服务器中被禁用。

func (*AdapterRedis) X设置Map

func (c *AdapterRedis) X设置Map(上下文 context.Context, 值 map[interface{}]interface{}, 时长 time.Duration) error

SetMap 批量设置缓存,通过 `data` 参数中的键值对进行设置,并在 `duration` 时间后过期。

如果 `duration` == 0,则表示永不过期。 如果 `duration` < 0 或者给定的 `value` 为 nil,则会删除 `data` 中的键。

func (*AdapterRedis) X设置值

func (c *AdapterRedis) X设置值(上下文 context.Context, 名称 interface{}, 值 interface{}, 时长 time.Duration) (错误 error)

Set 通过 `key`-`value` 对设置缓存,该对在 `duration` 后过期。

如果 `duration` == 0,则永不过期。 如果 `duration` < 0 或提供的 `value` 为 nil,则删除 `data` 的键。

func (*AdapterRedis) X设置值并跳过已存在

func (c *AdapterRedis) X设置值并跳过已存在(上下文 context.Context, 名称 interface{}, 值 interface{}, 时长 time.Duration) (bool, error)

SetIfNotExist 若`key`不存在于缓存中,则设置带有`key`-`value`对的缓存,该对在`duration`后过期。 如果`key`在缓存中不存在,它将返回true,并成功将`value`设置到缓存中,否则返回false。

如果`duration` == 0,则不会设置过期时间。 如果`duration` < 0 或给定的`value`为nil,则删除`key`。

func (*AdapterRedis) X设置值并跳过已存在_函数

func (c *AdapterRedis) X设置值并跳过已存在_函数(上下文 context.Context, 名称 interface{}, 回调函数 Func, 时长 time.Duration) (成功 bool, 错误 error)

SetIfNotExistFunc 函数用于设置 `key` 为函数 `f` 的计算结果,并在 `key` 不存在于缓存中时返回 true, 否则如果 `key` 已存在,则不做任何操作并返回 false。

参数 `value` 可以是类型 `func() interface{}`,但如果其结果为 nil,则该函数不会执行任何操作。

如果 `duration` == 0,则不设置过期时间。 如果 `duration` < 0 或给定的 `value` 为 nil,则会删除 `key`。

func (*AdapterRedis) X设置值并跳过已存在_并发安全函数

func (c *AdapterRedis) X设置值并跳过已存在_并发安全函数(上下文 context.Context, 名称 interface{}, 回调函数 Func, 时长 time.Duration) (成功 bool, 错误 error)

SetIfNotExistFuncLock 将通过函数 `f` 计算的结果设置为 `key` 的值,并在以下情况下返回 true: 1. 如果 `key` 不存在于缓存中,则设置并返回 true。 2. 否则,如果 `key` 已经存在,则不做任何操作并返回 false。 若 `duration` 等于 0,则不设置过期时间。 若 `duration` 小于 0 或提供的 `value` 为 nil,则删除 `key`。 注意,此方法与函数 `SetIfNotExistFunc` 的不同之处在于, 函数 `f` 在写入互斥锁保护下执行,以确保并发安全。

type Cache

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

Cache struct.

func X创建

func X创建(淘汰数量 ...int) *Cache

New 函数创建并返回一个使用默认内存适配器的新缓存对象。 注意,LRU(最近最少使用)特性仅在使用内存适配器时可用。

func X创建并按适配器

func X创建并按适配器(适配器 Adapter) *Cache

NewWithAdapter 使用给定的已实现Adapter接口的对象创建并返回一个Cache对象。

func (*Cache) X删除

func (c *Cache) X删除(上下文 context.Context, 名称s []interface{}) error

删除缓存中的`keys`。

func (*Cache) X取值PANI

func (c *Cache) X取值PANI(上下文 context.Context, 名称 interface{}) *泛型类.Var

MustGet 行为类似于 Get,但当发生任何错误时,它会触发panic。

func (*Cache) X取值或设置值PANI

func (c *Cache) X取值或设置值PANI(上下文 context.Context, 名称 interface{}, 值 interface{}, 时长 time.Duration) *泛型类.Var

MustGetOrSet 行为类似于 GetOrSet,但是当发生任何错误时,它会触发panic(异常)。

func (*Cache) X取值或设置值_函数PANI

func (c *Cache) X取值或设置值_函数PANI(上下文 context.Context, 名称 interface{}, 回调函数 Func, 时长 time.Duration) *泛型类.Var

MustGetOrSetFunc 行为类似于 GetOrSetFunc,但当发生任何错误时它会触发panic。

func (*Cache) X取值或设置值_并发安全函数PANI

func (c *Cache) X取值或设置值_并发安全函数PANI(上下文 context.Context, 名称 interface{}, 回调函数 Func, 时长 time.Duration) *泛型类.Var

MustGetOrSetFuncLock 类似于 GetOrSetFuncLock,但如果发生任何错误,它会触发 panic。

func (*Cache) X取所有值PANI

func (c *Cache) X取所有值PANI(上下文 context.Context) []interface{}

MustValues 行为类似 Values,但是当发生任何错误时它会触发panic(异常)。

func (*Cache) X取所有键PANI

func (c *Cache) X取所有键PANI(上下文 context.Context) []interface{}

MustKeys 行为类似 Keys,但当发生任何错误时会触发 panic。

func (*Cache) X取所有键值Map副本PANI

func (c *Cache) X取所有键值Map副本PANI(上下文 context.Context) map[interface{}]interface{}

MustData 的行为类似于 Data,但是当发生任何错误时它会触发panic(异常)。

func (*Cache) X取所有键文本

func (c *Cache) X取所有键文本(上下文 context.Context) ([]string, error)

KeyStrings 返回缓存中的所有键,以字符串切片的形式。

func (*Cache) X取所有键文本PANI

func (c *Cache) X取所有键文本PANI(上下文 context.Context) []string

MustKeyStrings 行为类似 KeyStrings,但当发生任何错误时,它会引发 panic。

func (*Cache) X取数量PANI

func (c *Cache) X取数量PANI(上下文 context.Context) int

MustSize 的行为类似于 Size,但如果发生任何错误,它会触发 panic。

func (*Cache) X取过期时间PANI

func (c *Cache) X取过期时间PANI(上下文 context.Context, 名称 interface{}) time.Duration

MustGetExpire 的行为类似于 GetExpire,但是当发生任何错误时,它会触发panic。

func (*Cache) X取适配器

func (c *Cache) X取适配器() Adapter

GetAdapter 返回当前 Cache 中设置的适配器。

func (*Cache) X是否存在PANI

func (c *Cache) X是否存在PANI(上下文 context.Context, 名称 interface{}) bool

MustContains 行为类似于 Contains,但当发生任何错误时,它会触发panic(异常退出)。

func (*Cache) X设置适配器

func (c *Cache) X设置适配器(适配器 Adapter)

SetAdapter 更改此缓存的适配器。 非常需要注意的是,这个设置函数不是并发安全的,这意味着你不应该在多个goroutine中并发调用这个设置函数。

type Func

type Func func(上下文 context.Context) (值 interface{}, 错误 error)

Func 是缓存函数,用于计算并返回值。

Jump to

Keyboard shortcuts

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