# xcache **Repository Path**: xgotool/xcache ## Basic Information - **Project Name**: xcache - **Description**: 缓存仓库 - **Primary Language**: Go - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2023-12-18 - **Last Updated**: 2023-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # xcache #### 介绍 缓存仓库,默认使用内存缓存,而若使用其他缓存请先进行声明 #### 支持的方法 PS: .xxx 为xcache.xxx的简写,作用为避免部分场景下使用别名导入的形式直接 | 方法 | 作用 | | --- | --- | | CacheInterfaceExport{} | 内存形缓存结构体,实现有Get和Set两个方法,基于此结构体内的缓存锁,实现有并发锁定 | | .SetCacheTime(t time.Duration) | 设置默认缓存时长 | | .SetCache(c CacheInterface) | 设置缓存的存储方式【接口形式】 | | .Exists(name string) | 判断缓存值是否存在,此处是根据缓存是否为空来判断是否存在的,即内部实现为:.Get(name) == "" | | .Get(name string) | 获取缓存信息 | | .GetString(name string) | 获取缓存信息,等同于.Get | | .GetStruct(key string, val any) | 读取结构体,val传入的值需要为结构体指针,内部为 `json.Unmarshal` 解析 | | .SetExt(key, val string, t time.Duration) | 设置缓存值 | | .SetGroup(n, key, val string, t time.Duration) | 以分组的形式设置缓存值 | | .Set(key, val string) | 设置缓存值,其内实现逻辑为:.SetExt(key, val, time.Second*60) | | .SetNumber(key string, val any) | 设置数字类型的缓存值,默认时长1分钟 | | .SetStruct(key string, val any) | 设置结构体类型的缓存值,默认时长1分钟 | | .SetStructExt(key string, val any, t time.Duration) | 设置指定时长的缓存值 | | .SetStructGroup(g, key string, val any) | 设置结构体缓存【带分组】 | | .SetStruct(key string, val any) | 设置结构体缓存【不带分组】 | | .Clear() | 清空全部缓存【此处清空group中存在的所有缓存,而非清除所有】 | | .Remove(name string) | 清除单个缓存 | | .ClearGroup(name string) | 清除某组缓存 | #### 使用 ```go // 声明缓存结构体 type cache struct{} // 实现GET方法 func (c *cache) Get(name string) string { // 实现逻辑 return "" } // 实现SET方法 func (c *cache) Set(name string, val string, t time.Duration) { } // 设置该缓存到本依赖项中 xcache.SetCache(&cache{}) ```