1 个不稳定版本
0.1.0 | 2020年2月20日 |
---|
#2762 in 数据库接口
12KB
197 行
r2d2-influxdb
Rust的InfluxDB连接池
influxdb-rust 是一个支持 r2d2 连接池协议的库。
用法
将以下内容添加到您的 Cargo.toml
[dependencies]
r2d2-influxdb = "0.1.0"
然后查看下面的示例。
示例
请参阅 示例 获取可运行的示例。
快速入门
使用 pool.get()
,我们可以基本获得一个同步的 influxdb::Client
包装器,它继承了所有魔法,只需 async/await
。
extern crate r2d2_influxdb;
use r2d2_influxdb::{influxdb, r2d2, AuthInfo, InfluxDBConnectionManager};
use std::thread;
use influxdb::{Query, Timestamp};
fn main() {
let info = AuthInfo {
url: "https://127.0.0.1:8086".into(),
database: "weather".into(),
username: "root".into(),
password: "root".into(),
};
let manager = InfluxDBConnectionManager::new(info);
let pool = r2d2::Pool::builder().build(manager).unwrap();
let mut write_handles = vec![];
let mut read_handles = vec![];
for _i in 0..10i32 {
let pool = pool.clone();
let write_query =
Query::write_query(Timestamp::Now, "weather").add_field("temperature", _i);
write_handles.push(thread::spawn(move || {
let conn = pool.get().unwrap();
let write_result = conn.query(&write_query);
println!("{:?}", write_result);
}));
}
for h in write_handles {
h.join().unwrap();
}
for _i in 0..10i32 {
let pool = pool.clone();
let read_query = Query::raw_read_query("SELECT * FROM weather");
read_handles.push(thread::spawn(move || {
let conn = pool.get().unwrap();
let read_result = conn.query(&read_query);
println!("{:?}", read_result);
}));
}
for h in read_handles {
h.join().unwrap();
}
}
致谢
本项目深受 r2d2-redis 的启发。
许可证
依赖项
~4–13MB
~185K SLoC