2019-02-02 16:18:25 +08:00
|
|
|
|
// Copyright 2017-2018 gf Author(https://github.com/gogf/gf). All Rights Reserved.
|
2017-12-29 16:03:30 +08:00
|
|
|
|
//
|
|
|
|
|
// This Source Code Form is subject to the terms of the MIT License.
|
|
|
|
|
// If a copy of the MIT was not distributed with this file,
|
2019-02-02 16:18:25 +08:00
|
|
|
|
// You can obtain one at https://github.com/gogf/gf.
|
2017-12-29 16:03:30 +08:00
|
|
|
|
|
2019-01-16 13:35:16 +08:00
|
|
|
|
// Package gcache provides high performance and concurrent-safe in-memory cache for process.
|
2017-11-23 10:21:28 +08:00
|
|
|
|
package gcache
|
|
|
|
|
|
|
|
|
|
// 全局缓存管理对象
|
2018-09-18 09:45:06 +08:00
|
|
|
|
var cache = New()
|
2018-03-27 23:10:27 +08:00
|
|
|
|
|
2018-07-26 13:00:04 +08:00
|
|
|
|
// (使用全局KV缓存对象)设置kv缓存键值对,过期时间单位为**毫秒**
|
2018-09-15 16:40:13 +08:00
|
|
|
|
func Set(key interface{}, value interface{}, expire int) {
|
2018-02-26 16:28:01 +08:00
|
|
|
|
cache.Set(key, value, expire)
|
2017-11-23 10:21:28 +08:00
|
|
|
|
}
|
|
|
|
|
|
2018-09-07 19:08:42 +08:00
|
|
|
|
// 当键名不存在时写入,并返回true;否则返回false。
|
|
|
|
|
// 常用来做对并发性要求不高的内存锁。
|
2018-09-15 16:40:13 +08:00
|
|
|
|
func SetIfNotExist(key interface{}, value interface{}, expire int) bool {
|
2018-09-07 19:08:42 +08:00
|
|
|
|
return cache.SetIfNotExist(key, value, expire)
|
|
|
|
|
}
|
|
|
|
|
|
2018-07-26 13:00:04 +08:00
|
|
|
|
// (使用全局KV缓存对象)批量设置kv缓存键值对,过期时间单位为**毫秒**
|
2019-05-08 17:21:18 +08:00
|
|
|
|
func Sets(data map[interface{}]interface{}, expire int) {
|
|
|
|
|
cache.Sets(data, expire)
|
2017-11-23 10:21:28 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// (使用全局KV缓存对象)获取指定键名的值
|
2018-09-15 16:40:13 +08:00
|
|
|
|
func Get(key interface{}) interface{} {
|
2018-02-26 16:28:01 +08:00
|
|
|
|
return cache.Get(key)
|
2017-11-23 10:21:28 +08:00
|
|
|
|
}
|
|
|
|
|
|
2018-09-07 19:08:42 +08:00
|
|
|
|
// 当键名存在时返回其键值,否则写入指定的键值
|
2018-09-15 16:40:13 +08:00
|
|
|
|
func GetOrSet(key interface{}, value interface{}, expire int) interface{} {
|
2018-09-07 19:08:42 +08:00
|
|
|
|
return cache.GetOrSet(key, value, expire)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 当键名存在时返回其键值,否则写入指定的键值,键值由指定的函数生成
|
2018-09-15 16:40:13 +08:00
|
|
|
|
func GetOrSetFunc(key interface{}, f func() interface{}, expire int) interface{} {
|
2018-09-07 19:08:42 +08:00
|
|
|
|
return cache.GetOrSetFunc(key, f, expire)
|
|
|
|
|
}
|
|
|
|
|
|
2018-09-20 09:28:45 +08:00
|
|
|
|
// 与GetOrSetFunc不同的是,f是在写锁机制内执行
|
|
|
|
|
func GetOrSetFuncLock(key interface{}, f func() interface{}, expire int) interface{} {
|
|
|
|
|
return cache.GetOrSetFuncLock(key, f, expire)
|
|
|
|
|
}
|
|
|
|
|
|
2018-09-07 19:08:42 +08:00
|
|
|
|
// 是否存在指定的键名,true表示存在,false表示不存在。
|
2018-09-15 16:40:13 +08:00
|
|
|
|
func Contains(key interface{}) bool {
|
2018-09-07 19:08:42 +08:00
|
|
|
|
return cache.Contains(key)
|
|
|
|
|
}
|
|
|
|
|
|
2017-11-23 10:21:28 +08:00
|
|
|
|
// (使用全局KV缓存对象)删除指定键值对
|
2018-09-18 00:01:10 +08:00
|
|
|
|
func Remove(key interface{}) interface{} {
|
|
|
|
|
return cache.Remove(key)
|
2017-11-23 10:21:28 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// (使用全局KV缓存对象)批量删除指定键值对
|
2019-05-08 17:21:18 +08:00
|
|
|
|
func Removes(keys []interface{}) {
|
|
|
|
|
cache.Removes(keys)
|
2018-02-26 16:28:01 +08:00
|
|
|
|
}
|
|
|
|
|
|
2018-12-04 20:23:48 +08:00
|
|
|
|
// 返回缓存的所有数据键值对(不包含已过期数据)
|
|
|
|
|
func Data() map[interface{}]interface{} {
|
|
|
|
|
return cache.Data()
|
|
|
|
|
}
|
|
|
|
|
|
2018-09-15 16:40:13 +08:00
|
|
|
|
// 获得所有的键名,组成数组返回
|
|
|
|
|
func Keys() []interface{} {
|
2018-03-27 17:53:46 +08:00
|
|
|
|
return cache.Keys()
|
|
|
|
|
}
|
|
|
|
|
|
2018-09-15 16:40:13 +08:00
|
|
|
|
// 获得所有的键名,组成字符串数组返回
|
|
|
|
|
func KeyStrings() []string {
|
|
|
|
|
return cache.KeyStrings()
|
|
|
|
|
}
|
|
|
|
|
|
2018-03-27 17:53:46 +08:00
|
|
|
|
// 获得所有的值,组成数组返回
|
|
|
|
|
func Values() []interface{} {
|
|
|
|
|
return cache.Values()
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 获得缓存对象的键值对数量
|
|
|
|
|
func Size() int {
|
|
|
|
|
return cache.Size()
|
|
|
|
|
}
|