Go操作influxDB
influxDB
安装
下载
https://portal.influxdata.com/downloads/
这里需要注意因为这个网站引用了google的api所以国内点页面的按钮是没反应的,怎么办呢?
按照下图所示,按F12
打开浏览器的控制台,然后点击Elements
,按下Ctrl/Command+F
搜索releases/influxdb
,按回车查找自己所需版本的下载地址。
Mac和Linux用户可以点击https://v2.docs.influxdata.com/v2.0/get-started/下载。
安装
将上一步的压缩包,解压到本地。
influxDB介绍
名词介绍
influxDB名词 | 传统数据库概念 |
---|---|
database | 数据库 |
measurement | 数据表 |
point | 数据行 |
point
influxDB中的point相当于传统数据库里的一行数据,由时间戳(time)、数据(field)、标签(tag)组成。
Point属性 | 传统数据库概念 |
---|---|
time | 每个数据记录时间,是数据库中的主索引 |
field | 各种记录值(没有索引的属性),例如温度、湿度 |
tags | 各种有索引的属性,例如地区、海拔 |
Series
Series
相当于是 InfluxDB 中一些数据的集合,在同一个 database 中,retention policy、measurement、tag sets 完全相同的数据同属于一个 series,同一个 series 的数据在物理上会按照时间顺序排列存储在一起。
Go操作influxDB
安装
influxDB 1.x版本
1 | go get github.com/influxdata/influxdb1-client/v2 |
influxDB 2.x版本
1 | go get github.com/influxdata/influxdb-client- go |
基本使用
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 | package main import ( "fmt" "log" "time" client "github.com/influxdata/influxdb1-client/v2" ) // influxdb demo func connInflux() client.Client { cli, err := client.NewHTTPClient(client.HTTPConfig{ Addr: "http://127.0.0.1:8086" , Username: "admin" , Password: "" , }) if err != nil { log.Fatal(err) } return cli } // query func queryDB(cli client.Client, cmd string) (res []client.Result, err error) { q := client.Query{ Command: cmd, Database: "test" , } if response, err := cli.Query(q); err == nil { if response.Error() != nil { return res, response.Error() } res = response.Results } else { return res, err } return res, nil } // insert func writesPoints(cli client.Client) { bp, err := client.NewBatchPoints(client.BatchPointsConfig{ Database: "test" , Precision: "s" , //精度,默认ns }) if err != nil { log.Fatal(err) } tags := map [string]string{ "cpu" : "ih-cpu" } fields := map [string] interface {}{ "idle" : 201.1, "system" : 43.3, "user" : 86.6, } pt, err := client.NewPoint( "cpu_usage" , tags, fields, time.Now()) if err != nil { log.Fatal(err) } bp.AddPoint(pt) err = cli.Write(bp) if err != nil { log.Fatal(err) } log.Println( "insert success" ) } func main() { conn := connInflux() fmt.Println(conn) // insert writesPoints(conn) // 获取10条数据并展示 qs := fmt.Sprintf( "SELECT * FROM %s LIMIT %d" , "cpu_usage" , 10) res, err := queryDB(conn, qs) if err != nil { log.Fatal(err) } for _, row := range res[0].Series[0].Values { for j, value := range row { log.Printf( "j:%d value:%v\n" , j, value) } } } |
Songzhibin
分类:
GoGoGo
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· .NET Core 托管堆内存泄露/CPU异常的常见思路
· PostgreSQL 和 SQL Server 在统计信息维护中的关键差异
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 如何使用 Uni-app 实现视频聊天(源码,支持安卓、iOS)
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)