快速开始
在开发数据监控工具时,通常需要缓存上一次的数据采集状态。这样的场景一多,维护这些数据库就会带来较高的心智成本,因此我开发了DocKV。
你只需要在Google Doc新建一个电子表格并配置好读写权限,即可把该表格变成一个存储介质。DocKV会在该表格上维护一个键值数据库。
准备工作
- 新建Google Service Account, 文档在此 👉 Document of Service Account . 创建完服务账号之后,记录
Email
字段,后面会用到(图1)。图1. Google Service Account
- 点击图1中表格右侧的 Actions -> Manage Keys -> ADD KEY -> Create New Key, 此时会弹出一个对话框,这里Key type选择默认的 JSON,点击 CREATE,这时会自动格下载一个
JSON文件
,要保存好,后面会用到。图1. Google Service Account
- 进入 Google Doc , 新建一个电子表格。在表格的URL中找到
SHEET_ID
记录下来。
- 点击电子表格右上角的 共享,把这个表格的读写权限共享给第一步得到的
Email
对应的 Service Account。
安装
1
| go get -u github.com/0xjeffro/DocKV
|
例子
定义数据模式
1 2 3 4 5 6 7 8 9 10 11
| import ( DocKV "github.com/0xjeffro/DocKV" "os" )
type Model struct { Name string `json:"name"` Age int `json:"age"` Gender bool `json:"gender"` }
|
连接
1 2 3 4 5
| func connect() *DocKV.DocKV { clientSecret := os.Getenv("CLIENT_SECRET") sheetID := os.Getenv("SHEET_ID") return DocKV.NewDocKV(sheetID, Model{}, []byte(clientSecret), 60) }
|
其中,CLIENT_SECRET
对应的是“准备工作”章节中拿到的JSON文件
中的字符串;SHEET_ID
同理。
代码中的60
是缓存时间,单位为秒。由于Google API有限速机制,因此DocKV实现了一个简单的缓存,尽量避免触发限制。
注意事项
Google Doc API对于接口调用的频率有明确的限制,具体规则可见:Usage limits 。因此,DocKV只适用于很小的项目使用,在业务逻辑中要注意缓存时间的把握以及数据规模的适当维护。尤其不适用于以下场景:
- 高频地击穿查询:频繁查询缓存中可能不存在的键,导致大量请求直接落到API的调用上,触发请求频率限制。
- 高频写入:频繁地插入新的键,触发请求频率限制。