#时间序列 #客户端 #异步 #influx

influxrs

提供从InfluxDB 2.0写入和读取数据的客户端

5个版本 (3个稳定版本)

2.0.1 2022年8月15日
2.0.0 2022年1月20日
1.0.0 2022年1月20日
0.1.2 2022年1月18日
0.1.1 2021年6月1日

#2145数据库接口

每月27次下载

MIT 许可证

21KB
478

创建客户端

let client = InfluxClient::builder("www.example.com", "example-key", "example-org").build().unwrap();

写入数据

let measurement = Measurement::builder("m1")
    .tag("tag1", "tag1_value")
    .tag("tag2", "tag2_value")
    .field("field1", "string_value")
    .field("field2", true)
    .timestamp_ms(1622493622) // milliseconds since the Unix epoch
    .build()
    .unwrap();
let response = client
    .write("example-bucket", &[measurement]) // can post a batch if we want
    .await
    .unwrap();

查询数据

let response = client
    .query(
        Query::new(r#"from(bucket: "example-bucket")"#)
            .then(r#"range(start: 1622493322, stop: 1622493922)"#)
            .then(r#"filter(fn: (r) => r["_measurement"] == "m1")"#),
    )
    .await
    .unwrap();

在查询数据时,返回一个 Vec<HashMap<String, String>>,包含单个CSV记录

{
    "result": "_result",
    "_value": "string_value",
    "table": "0",
    "_start": "2021-06-01T11:13:15Z",
    "_field": "field1",
    "tag1": "tag1_value",
    "tag2": "tag2_value",
    "_time": "2021-06-01T11:16:05.684Z",
    "_measurement": "m1",
    "_stop": "2021-06-01T11:23:15Z",
}

依赖项

~12–21MB
~331K SLoC