C#使用时序数据库 InfluxDB

一、安装

https://docs.influxdata.com/influxdb/v2/install/?t=Windows

解压后使用cmd运行

访问 localhost:8086

配置

第一次登入会初始化

配置登入账号
保存TOKEN

这个TOKEN用于后期代码链接访问数据库,忘记了只能删除重新生成

点击QUCK START进入管理页面

默认配置文件

windows:在用户文件夹下 C:\Users\Administrator.influxdbv2

linux: /etc/influxdb/influxdb.conf

二、C#调用

Load Data>Sources 选择c# 查看配置示例
创建一个控制台程序

安装InfluxDB客户端

创建链接
csharp 复制代码
using System.Linq;
using System.Threading.Tasks;
using InfluxDB.Client;
using InfluxDB.Client.Api.Domain;
using InfluxDB.Client.Core;
using InfluxDB.Client.Writes;

namespace Examples
{
  public class Examples
  {
    public static async Task Main(string[] args)
    {
      // You can generate an API token from the "API Tokens Tab" in the UI
      var token = Environment.GetEnvironmentVariable("INFLUX_TOKEN")!;
      const string bucket = "Test";
      const string org = "CC";

      using var client = new InfluxDBClient("http://127.0.0.1:8086", token);
    }
  }
}
写入数据
csharp 复制代码
//方式一、使用WriteRecord
const string data = "mem,host=host1 used_percent=23.43234543";
using (var writeApi = client.GetWriteApi())
{
  writeApi.WriteRecord(data,bucket, org, WritePrecision.Ns );
}

//方式二、使用WritePoint
var point = PointData
  .Measurement("mem")
  .Tag("host", "host1")
  .Field("used_percent", 23.43234543)
  .Timestamp(DateTime.UtcNow, WritePrecision.Ns);

using (var writeApi = client.GetWriteApi())
{
  writeApi.WritePoint(point,bucket, org);
}

//方式三、使用实体类
var mem = new Mem { Host = "host1", UsedPercent = 23.43234543, Time = DateTime.UtcNow };

using (var writeApi = client.GetWriteApi())
{
  writeApi.WriteMeasurement( mem,bucket, org, WritePrecision.Ns);
}


[Measurement("mem")]
private class Mem
{
  [Column("host", IsTag = true)] public string Host { get; set; }
  [Column("used_percent")] public double? UsedPercent { get; set; }
  [Column(IsTimestamp = true)] public DateTime Time { get; set; }
}
最终测试代码
csharp 复制代码
// See https://aka.ms/new-console-template for more information
using InfluxDB.Client;
using InfluxDB.Client.Api.Domain;
using InfluxDB.Client.Writes;

Console.WriteLine("Hello, World!");
Environment.SetEnvironmentVariable("INFLUX_TOKEN", "O9I2Kpeg...kLPSrQLWhTiJCQPWy6HJFjN9hK33UoLnG34vfFdqZ5KmoDLS-kkw==");

var token = Environment.GetEnvironmentVariable("INFLUX_TOKEN")!;
const string bucket = "Test";
const string org = "CC";

using (var client = new InfluxDBClient("http://localhost", token))
{
    using (var writeApi = client.GetWriteApi())
    {
       while (true)
        {
            var randon = new Random();
            var point = PointData
                           .Measurement("mem")
                           .Tag("host", "host1")
                           .Field("used_percent", randon.Next(10, 100)) //可以添加多个字段
                           .Field("memory_percent",randon.Next(0,10))
                           .Timestamp(DateTime.UtcNow, WritePrecision.Ns);

            writeApi.WritePoint(point, bucket, org);

            Thread.Sleep(2000);
        }
    }
}
在管理页面查看数据


相关推荐
ZeroToOneDev1 小时前
Java(泛型和JUnit)
java·开发语言·笔记
许野平1 小时前
Rust:构造函数 new() 如何进行错误处理?
开发语言·后端·rust
先做个垃圾出来………2 小时前
如何培养自己工程化的能力(python项目)
开发语言·python
Hemy084 小时前
QT_QUICK_BACKEND 环境变量详解(AI生成)
开发语言·qt
艾莉丝努力练剑5 小时前
深入详解C语言的循环结构:while循环、do-while循环、for循环,结合实例,讲透C语言的循环结构
c语言·开发语言·c++·学习
ts码农6 小时前
Aspose使用
c#·aspose
晨非辰6 小时前
#C语言——学习攻略:自定义类型路线--结构体--结构体类型,结构体变量的创建和初始化,结构体内存对齐,结构体传参,结构体实现位段
c语言·开发语言·经验分享·学习·其他·学习方法·visual studio
赵英英俊6 小时前
Python day43
开发语言·python
Warren987 小时前
公司项目用户密码加密方案推荐(兼顾安全、可靠与通用性)
java·开发语言·前端·javascript·vue.js·python·安全