1 Star 1 Fork 1

lorock / go-dingtalk-sdk

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
memcache.go 1.80 KB
一键复制 编辑 原始数据 按行查看 历史
lorock 提交于 2020-11-15 22:27 . 初始化仓库
package cache
import (
"errors"
"strings"
"time"
"github.com/bradfitz/gomemcache/memcache"
)
type MemCache struct {
conn *memcache.Client
conninfo []string
}
type MemOpts struct {
Conn string
}
func NewMemCache() Cache {
return &MemCache{}
}
func (rc *MemCache) Get(key string) interface{} {
if rc.conn == nil {
if err := rc.connectInit(); err != nil {
return err
}
}
if item, err := rc.conn.Get(key); err == nil {
return item.Value
}
return nil
}
func (rc *MemCache) Set(key string, val interface{}, timeout time.Duration) error {
if rc.conn == nil {
if err := rc.connectInit(); err != nil {
return err
}
}
item := memcache.Item{Key: key, Expiration: int32(timeout / time.Second)}
if v, ok := val.([]byte); ok {
item.Value = v
} else if str, ok := val.(string); ok {
item.Value = []byte(str)
} else {
return errors.New("val only support string and []byte")
}
return rc.conn.Set(&item)
}
func (rc *MemCache) Delete(key string) error {
if rc.conn == nil {
if err := rc.connectInit(); err != nil {
return err
}
}
return rc.conn.Delete(key)
}
func (rc *MemCache) IsExist(key string) bool {
if rc.conn == nil {
if err := rc.connectInit(); err != nil {
return false
}
}
_, err := rc.conn.Get(key)
return !(err != nil)
}
func (rc *MemCache) Init(cfg interface{}) error {
var opts *MemOpts
if val, ok := cfg.(*MemOpts); !ok {
return errors.New("interface not type MemOpts")
} else {
opts = val
}
if opts.Conn == "" {
return errors.New("config has no conn key")
}
rc.conninfo = strings.Split(opts.Conn, ";")
if rc.conn == nil {
if err := rc.connectInit(); err != nil {
return err
}
}
return nil
}
func (rc *MemCache) connectInit() error {
rc.conn = memcache.New(rc.conninfo...)
return nil
}
func init() {
Register("memcache", NewMemCache())
}
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Go
1
https://gitee.com/lorock/go-dingtalk-sdk.git
git@gitee.com:lorock/go-dingtalk-sdk.git
lorock
go-dingtalk-sdk
go-dingtalk-sdk
v1.0.6

搜索帮助

344bd9b3 5694891 D2dac590 5694891