基本介绍

使用方式

接口文档

简要介绍:

  1. gcache使用的键名类型是interface{},而不是string类型,这意味着我们可以使用任意类型的变量作为键名,但大多数时候建议使用string或者[]byte作为键名,并且统一键名的数据类型,以便维护。

  2. 存储的键值类型是interface{},也就是说可以存储任意的数据类型,当获取数据时返回的也是interface{}类型,若需要转换为其他的类型可以通过gcacheGet*方法便捷获取常见类型。注意,如果您确定知道自己使用的是内存缓存,那么可以直接使用断言方式对返回的interface{}变量进行类型转换,否则建议通过获取到的泛型对象对应方法完成类型转换。

注意事项

大家可以发现缓存组件中关于键值对的数据类型都是interface{},这种设计主要是为了考虑通用性和易用性,但是使用上需要注意interface{}的比较:只有数据类型都相等才算真正匹配。我们来看个例子。

可以看到,虽然key1key2的数值都是相同的,但是两者类型不同,因此通过key2无法获取到键值。

关于获取对象键值

由于键值的类型也是interface{},往往在获取后会通过类型转换为需要的数据类型。常见的类型转换是直接使用类型断言,这种做法有种风险,就是由于gcache组件采用适配器接口设计模式,因此底层的实现上(除了默认的内存适配器)往往会改变原有的数据类型(非内存实现往往都会涉及到序列化/反序列化存储),因此不推荐大家直接使用类型断言进行数据类型转换。

因此缓存组件在获取键值上做了改进,并不是直接返回的键值类型,而是以框架泛型*gvar.Var对象返回,开发者根据业务场景转换为所需的数据类型。特别是针对于对象缓存存储和读取的场景特别有用,我们来看一个示例:

执行后,终端输出:

相关文档