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数据库接口

Download history 175/week @ 2024-04-27 44/week @ 2024-05-04 48/week @ 2024-05-11 63/week @ 2024-05-18 124/week @ 2024-05-25 59/week @ 2024-06-01 296/week @ 2024-06-08 48/week @ 2024-06-15 33/week @ 2024-06-22 30/week @ 2024-06-29 15/week @ 2024-07-06 47/week @ 2024-07-13 16/week @ 2024-07-20 53/week @ 2024-07-27 86/week @ 2024-08-03 33/week @ 2024-08-10

每月208次下载
reduct-cli中使用

MPL-2.0 许可证

96KB
2K SLoC

ReductStore 客户端 SDK for Rust

Crates.io Docs.rs GitHub Workflow Status

此包提供了一个HTTP客户端,用于与ReductStore(非结构化数据的时间序列数据库)交互。

特性

示例

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