57 lines
1.2 KiB
Go
57 lines
1.2 KiB
Go
package cache
|
|
|
|
import (
|
|
"strings"
|
|
"time"
|
|
|
|
"github.com/patrickmn/go-cache"
|
|
)
|
|
|
|
// 创建一个全局的不过期缓存对象
|
|
var cNoExpiration = cache.New(cache.NoExpiration, cache.NoExpiration)
|
|
|
|
// 将数据放入缓存,并设置永不过期
|
|
func SetLocal(key string, value any) {
|
|
cNoExpiration.Set(key, value, cache.NoExpiration)
|
|
}
|
|
|
|
// 从缓存中获取数据
|
|
func GetLocal(key string) (any, bool) {
|
|
return cNoExpiration.Get(key)
|
|
}
|
|
|
|
// 从缓存中删除数据
|
|
func DeleteLocal(key string) {
|
|
cNoExpiration.Delete(key)
|
|
}
|
|
|
|
// 获取指定前缀的所有键
|
|
func GetLocalKeys(prefix string) []string {
|
|
prefix = strings.TrimSuffix(prefix, "*")
|
|
var keys []string
|
|
for key := range cNoExpiration.Items() {
|
|
if strings.HasPrefix(key, prefix) {
|
|
keys = append(keys, key)
|
|
}
|
|
}
|
|
return keys
|
|
}
|
|
|
|
// 创建一个全局的过期缓存对象
|
|
var cTTL = cache.New(6*time.Hour, 12*time.Hour)
|
|
|
|
// 设置具有过期时间的缓存项
|
|
func SetLocalTTL(key string, value any, expiration time.Duration) {
|
|
cTTL.Set(key, value, expiration)
|
|
}
|
|
|
|
// 从缓存中获取数据
|
|
func GetLocalTTL(key string) (any, bool) {
|
|
return cTTL.Get(key)
|
|
}
|
|
|
|
// 从缓存中删除数据
|
|
func DeleteLocalTTL(key string) {
|
|
cTTL.Delete(key)
|
|
}
|