mirror of
https://github.com/xxjwxc/public.git
synced 2026-04-22 23:17:20 +08:00
80 lines
1.3 KiB
Go
80 lines
1.3 KiB
Go
/*
|
|
key/value 内存缓存,支持基于超时的自动无效功能
|
|
*/
|
|
package mycache
|
|
|
|
import (
|
|
"time"
|
|
|
|
"github.com/xxjwxc/public/mycache/cache2go"
|
|
)
|
|
|
|
// MyCache 内存缓存
|
|
type MyCache struct {
|
|
cache *cache2go.CacheTable
|
|
}
|
|
|
|
/*
|
|
初始化一个cache
|
|
cachename 缓存名字
|
|
*/
|
|
func NewCache(cachename string) (mc *MyCache) {
|
|
mc = &MyCache{}
|
|
mc.cache = cache2go.Cache(cachename)
|
|
return
|
|
}
|
|
|
|
/*
|
|
添加一个缓存
|
|
lifeSpan:缓存时间,0表示永不超时
|
|
*/
|
|
func (mc *MyCache) Add(key interface{}, value interface{}, lifeSpan time.Duration) *cache2go.CacheItem {
|
|
return mc.cache.Add(key, lifeSpan, value)
|
|
}
|
|
|
|
/*
|
|
查找一个cache
|
|
value 返回的值
|
|
*/
|
|
|
|
func (mc *MyCache) Value(key interface{}) (value interface{}, b bool) {
|
|
b = false
|
|
res, err := mc.cache.Value(key)
|
|
if err == nil {
|
|
value = res.Data()
|
|
b = true
|
|
return
|
|
}
|
|
return
|
|
}
|
|
|
|
/*
|
|
判断key是否存在
|
|
*/
|
|
func (mc *MyCache) IsExist(key interface{}) bool {
|
|
return mc.cache.Exists(key)
|
|
}
|
|
|
|
/*
|
|
删除一个cache
|
|
*/
|
|
func (mc *MyCache) Delete(key interface{}) error {
|
|
_, err := mc.cache.Delete(key)
|
|
return err
|
|
}
|
|
|
|
/*
|
|
获取原始cache2go操作类
|
|
*/
|
|
func (mc *MyCache) GetCache2go() *cache2go.CacheTable {
|
|
return mc.cache
|
|
}
|
|
|
|
/*
|
|
清空表內容
|
|
*/
|
|
func (mc *MyCache) Clear() bool {
|
|
mc.cache.Flush()
|
|
return true
|
|
}
|