- 简介
- 核心包目录
- 支持驱动
- 缓存接口设计
- 获取Cache对象
- 使用规范
简介
snow框架目前提供的缓存驱动,只支持redis,主要是因为公司业务特性,目前基本使用redis作为缓存服务,但是框架本身可支持扩展其他驱动。
核心包目录
github.com/qit-team/snow-core/cache
支持驱动
目前已支持redis驱动,可自行进行插件式扩展。
_ "github.com/qit-team/snow-core/cache/rediscache"
缓存接口设计
type Cache interface {Get(ctx context.Context, key string) (interface{}, error)GetMulti(ctx context.Context, keys ... string) (map[string]interface{}, error)Set(ctx context.Context, key string, value interface{}, ttl int) (bool, error)SetMulti(ctx context.Context, items map[string]interface{}, ttl int) (bool, error)Delete(ctx context.Context, key string) (bool, error)DeleteMulti(ctx context.Context, key ... string) (bool, error)Expire(ctx context.Context, key string, ttl int) (bool, error)IsExist(ctx context.Context, key string) (bool, error)}
驱动程序只需要实现上述的缓存接口,即可作为缓存驱动引入。同时在init函数中实现cache.Register(driverType, driver),可以实现插件式的扩展支持,可参考github.com/qit-team/snow-core/cache/rediscache实现。
获取Cache对象
## diName表示依赖注入别名;driverType表示驱动类型;cache.GetCache(diName, driverType)
这里需要注意一下,diName是所属底层驱动类型的依赖注入别名,如果底层驱动是redis,name就是使用我们在redis资源实例中使用的依赖注入别名。
使用规范
每一种业务类型的缓存,新建一个子目录,可以参考框架自带的app/caches/bannerlistcache,不同的业务统一在app/caches/cache_key.go目录定义缓存前缀的key,这样既可以实现不同业务间不会出现缓存key冲突。
