内存缓存使用
概述
本章节主要介绍 cache 的使用。
准备条件
创建
函数签名:NewCache func(expire time.Duration, opts ...CacheOption) (*Cache, error)说明:创建 cache 对象。入参:1. expire: 过期时间2. opts: 操作选项2.1 WithLimit: 设置 cache 存储数据数量上限2.2 WithName: 设置 cache 名称,输出日志时会打印返回值:1. *Cache: cache对象2. error: 创建结果
方法说明
-
函数签名:Set func(key string, value interface{})说明:添加值到缓存。入参:1. key: key2. value: 值示例:cache, err := NewCache(time.Second*2, WithName("any"))if err != nil {log.Fatal(err)}cache.Set("first", "first element")
-
函数签名:SetWithExpire func(key string, value interface{}, expire time.Duration)说明:添加值到缓存, 同时指定过期时间入参:1. key: key2. value: 值3. expire: 过期时间示例:cache, err := NewCache(time.Second*2, WithName("any"))if err != nil {log.Fatal(err)}cache.SetWithExpire("first", "first element", time.Second)
-
函数签名:Get func(key string) (interface{}, bool)说明:查询缓存入参:1. key: key返回值:1. interface{}: value2. bool: 是否存在示例:cache, err := NewCache(time.Second*2, WithName("any"))if err != nil {log.Fatal(err)}cache.Set("first", "first element")v, exist := cache.Get("first")if !exist {// deal with not exist}value, ok := v.(string)if !ok {// deal with type error}// use value
-
函数签名:Del func(key string)说明:删除缓存。入参:1. key: key示例:cache, err := NewCache(time.Second*2, WithName("any"))if err != nil {log.Fatal(err)}cache.Del("first")
-
函数签名:Take funcTake(key string, fetch func() (interface{}, error)) (interface{}, error)说明:获取缓存,如果缓存中存在,则返回缓存中的值,如果缓存不存在,则执行 fetch 函数的返回结果。入参:1. key: key2. fetch: 自定义返回结果示例:cache, err := NewCache(time.Second*2, WithName("any"))if err != nil {log.Fatal(err)}v, err := cache.Take("first", func() (interface{}, error) {return "first element", nil})println(v) // output: first elementcache.Set("first", "first element 2")v, err = cache.Take("first", func() (interface{}, error) {return "first element", nil})println(v) // // output: first element 2