mirror of https://gitee.com/godoos/godoos.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
65 lines
1.3 KiB
65 lines
1.3 KiB
package cache
|
|
|
|
import (
|
|
"errors"
|
|
"time"
|
|
)
|
|
|
|
// 初始化缓存
|
|
// cache, err := cache.NewCache(cache.CacheConfig{
|
|
// Type: cache.FileCacheType,
|
|
// FileDir: "data/cache",
|
|
// })
|
|
// if err != nil {
|
|
// log.Fatal(err)
|
|
// }
|
|
|
|
// // 设置缓存(有效期10分钟)
|
|
// err = cache.Set("user:1", userData, 10*time.Minute)
|
|
|
|
// // 获取缓存
|
|
// val, err := cache.Get("user:1")
|
|
|
|
// // 删除缓存
|
|
// err = cache.Delete("user:1")
|
|
|
|
// CacheItem 缓存项结构
|
|
type CacheItem struct {
|
|
Value interface{} `json:"value"`
|
|
ExpiresAt time.Time `json:"expiresAt"`
|
|
}
|
|
|
|
// Cache 定义缓存接口
|
|
type Cache interface {
|
|
// Set 设置缓存
|
|
Set(key string, value interface{}, ttl time.Duration) error
|
|
// Get 获取缓存
|
|
Get(key string) (interface{}, error)
|
|
GetKey(key string, val string) (interface{}, error)
|
|
// Delete 删除缓存
|
|
Delete(key string) error
|
|
// Clear 清空缓存
|
|
Clear() error
|
|
// Exists 检查缓存是否存在
|
|
Exists(key string) (bool, error)
|
|
}
|
|
|
|
var (
|
|
ErrCacheMiss = errors.New("cache: key not found")
|
|
ErrCacheExpired = errors.New("cache: key expired")
|
|
)
|
|
|
|
// NewCache 创建缓存实例
|
|
func NewCache(cacheType string, fileDir string) Cache {
|
|
switch cacheType {
|
|
case "memory":
|
|
return NewMemoryCache()
|
|
case "file":
|
|
if fileDir == "" {
|
|
return NewMemoryCache()
|
|
}
|
|
return NewFileCache(fileDir)
|
|
default:
|
|
return NewMemoryCache()
|
|
}
|
|
}
|
|
|