Files
cloudreve/pkg/cache/driver.go

64 lines
1.5 KiB
Go
Raw Normal View History

2019-12-05 17:01:14 +08:00
package cache
2019-12-09 15:20:02 +08:00
import (
"github.com/HFO4/cloudreve/pkg/conf"
"github.com/gin-gonic/gin"
)
2019-12-05 17:01:14 +08:00
// Store 缓存存储器
2019-12-09 15:20:02 +08:00
var Store Driver
func init() {
Store = NewRedisStore(10, "tcp", "127.0.0.1:6379", "", "0")
return
if conf.RedisConfig.Server == "" || gin.Mode() == gin.TestMode {
Store = NewMemoStore()
} else {
Store = NewRedisStore(10, "tcp", conf.RedisConfig.Server, conf.RedisConfig.Password, conf.RedisConfig.DB)
}
}
2019-12-05 17:01:14 +08:00
// Driver 键值缓存存储容器
type Driver interface {
2019-12-09 15:20:02 +08:00
// 设置值
2019-12-05 17:01:14 +08:00
Set(key string, value interface{}) error
2019-12-09 15:20:02 +08:00
// 取值
2019-12-05 17:01:14 +08:00
Get(key string) (interface{}, bool)
2019-12-09 15:20:02 +08:00
// 批量取值返回成功取值的map即不存在的值
Gets(keys []string, prefix string) (map[string]interface{}, []string)
// 批量设置值
Sets(values map[string]interface{}, prefix string) error
}
// Set 设置缓存值
func Set(key string, value interface{}) error {
return Store.Set(key, value)
}
// Get 获取缓存值
func Get(key string) (interface{}, bool) {
return Store.Get(key)
}
// GetsSettingByName 根据名称批量获取设置项缓存
func GetsSettingByName(keys []string) (map[string]string, []string) {
raw, miss := Store.Gets(keys, "setting_")
res := make(map[string]string, len(raw))
for k, v := range raw {
res[k] = v.(string)
}
return res, miss
}
// SetSettings 批量设置站点设置缓存
func SetSettings(values map[string]string) error {
var toBeSet = make(map[string]interface{}, len(values))
for key, value := range values {
toBeSet[key] = interface{}(value)
}
return Store.Sets(toBeSet, "setting_")
2019-12-05 17:01:14 +08:00
}