Feat: redis driver for cache
This commit is contained in:
55
pkg/cache/driver.go
vendored
55
pkg/cache/driver.go
vendored
@@ -1,10 +1,63 @@
|
||||
package cache
|
||||
|
||||
import (
|
||||
"github.com/HFO4/cloudreve/pkg/conf"
|
||||
"github.com/gin-gonic/gin"
|
||||
)
|
||||
|
||||
// Store 缓存存储器
|
||||
var Store Driver = NewMemoStore()
|
||||
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)
|
||||
}
|
||||
}
|
||||
|
||||
// Driver 键值缓存存储容器
|
||||
type Driver interface {
|
||||
// 设置值
|
||||
Set(key string, value interface{}) error
|
||||
// 取值
|
||||
Get(key string) (interface{}, bool)
|
||||
// 批量取值,返回成功取值的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_")
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user