18个稳定版本
新版本 1.11.0 | 2024年8月19日 |
---|---|
1.10.1 | 2024年6月11日 |
1.9.5 | 2024年3月30日 |
1.8.1 | 2024年1月28日 |
1.6.1 | 2023年8月28日 |
#1085 在 数据库接口
每月208次下载
在reduct-cli中使用
96KB
2K SLoC
ReductStore 客户端 SDK for Rust
此包提供了一个HTTP客户端,用于与ReductStore(非结构化数据的时间序列数据库)交互。
特性
- 支持ReductStore HTTP API v1.11
- 基于reqwest
- 异步API
示例
use bytes::Bytes;
use futures_util::stream::StreamExt;
use reduct_rs::{QuotaType, ReductClient, ReductError};
use std::pin::pin;
use std::time::{Duration, SystemTime};
use tokio;
#[tokio::main]
async fn main() -> Result<(), ReductError> {
// 1. Create a ReductStore client
let client = ReductClient::builder()
.url("http://127.0.0.1:8383")
.api_token("my-token")
.build();
// 2. Get or create a bucket with 1Gb quota
let bucket = client
.create_bucket("my-bucket")
.quota_type(QuotaType::FIFO)
.quota_size(1_000_000_000)
.exist_ok(true)
.send()
.await?;
// 3. Write some data with timestamps in the 'sensor-1' entry
let start = SystemTime::now();
bucket
.write_record("sensor-1")
.data(b"Record #1")
.timestamp(start)
.send()
.await?;
bucket
.write_record("sensor-1")
.data(b"Record #2")
.timestamp(start + Duration::from_secs(1))
.send()
.await?;
// 4. Query the data by time range
let query = bucket
.query("sensor-1")
.start(start)
.stop(start + Duration::from_secs(2))
.send()
.await?;
let mut query = pin!(query);
while let Some(record) = query.next().await {
let record = record?;
println!("Record timestamp: {:?}", record.timestamp());
println!("Record size: {}", record.content_length());
println!("{:?}", record.bytes().await?);
}
// 5. Exit
Ok(())
}
}
更多示例,请参阅ReductStore文档中的指南部分。
依赖项
~16–28MB
~535K SLoC