• C#使用时序数据库 InfluxDB


    一、安装

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

    image.png

    解压后使用cmd运行

    image.png
    访问 localhost:8086

    配置

    第一次登入会初始化
    image.png

    配置登入账号

    image.png

    保存TOKEN

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

    image.png
    点击QUCK START进入管理页面
    image.png
    image.png

    默认配置文件

    windows:在用户文件夹下 C:\Users\Administrator.influxdbv2
    linux: /etc/influxdb/influxdb.conf

    二、C#调用

    Load Data>Sources 选择c# 查看配置示例

    image.png

    创建一个控制台程序

    安装InfluxDB客户端
    image.png

    创建链接
    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);
        }
      }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    写入数据

    image.png

    //方式一、使用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; }
    }
    
    • 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
    最终测试代码
    // 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);
            }
        }
    }
    
    • 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
    在管理页面查看数据

    image.png
    image.png

  • 相关阅读:
    【C++】基础容器(学习笔记)
    深入了解Java 8 新特性:Stream流的实践应用(二)
    了解CSS中的link和@import引入CSS的区别
    使用GSON把数据保存为json格式文件
    【VRTK】【VR开发】【Unity】6-设置interactor和虚拟手
    主板知识:了解的PCI Express Gen 5的终极指南
    工具分享 | PDF文档解析工具PyMuPDF
    IDC:未来中国MES市场仍将快速发展分化
    MaxCompute实例相关操作
    Java进阶学习路线图
  • 原文地址:https://blog.csdn.net/qibao16/article/details/134401318