update memcached
continuous-integration/drone/push Build is passing Details

master
李光春 2 years ago
parent a8d5163e13
commit 9cef3167e1

@ -0,0 +1,57 @@
package gocache
import (
"encoding/json"
"github.com/bradfitz/gomemcache/memcache"
)
// MemcachedCache https://github.com/bradfitz/gomemcache
type MemcachedCache struct {
db *Memcached // 驱动
GetterString GttStringFunc // 不存在的操作
GetterInterface GttInterfaceFunc // 不存在的操作
}
// NewCache 实例化
func (m *Memcached) NewCache() *MemcachedCache {
return &MemcachedCache{db: m}
}
// GetString 缓存操作
func (mc *MemcachedCache) GetString(key string) (ret string) {
f := func() string {
return mc.GetterString()
}
// 如果不存在则调用GetterString
ret, err := mc.db.Get(key)
if err == memcache.ErrCacheMiss {
mc.db.Set(key, []byte(f()))
ret, _ = mc.db.Get(key)
}
return
}
// GetInterface 缓存操作
func (mc *MemcachedCache) GetInterface(key string, result interface{}) {
f := func() string {
marshal, _ := json.Marshal(mc.GetterInterface())
return string(marshal)
}
// 如果不存在则调用GetterInterface
get, err := mc.db.Get(key)
if err == memcache.ErrCacheMiss {
mc.db.Set(key, []byte(f()))
get, _ = mc.db.Get(key)
}
err = json.Unmarshal([]byte(get), result)
return
}
Loading…
Cancel
Save