CDRS is production-ready Apache Cassandra driver written in pure Rust.
- Asynchronous API;
- TCP/TLS connection;
- Topology-aware dynamic and configurable load balancing;
- Configurable connection strategies;
- LZ4, Snappy compression;
- Cassandra-to-Rust data deserialization;
- Pluggable authentication strategies;
- ScyllaDB support;
- Server events listening;
- Multiple CQL version support (3, 4), full spec implementation;
- Query tracing information;
- Prepared statements;
- Query paging;
- Batch statements;
- Configurable retry and reconnection policy;
- Support for interleaved queries;
- Support for Yugabyte YCQL JSONB;
- User guide.
- Examples.
- API docs (release).
- Using ScyllaDB with RUST lesson.
This example configures a cluster consisting of a single node, and uses round-robin load balancing.
use cdrs_tokio::cluster::session::{TcpSessionBuilder, SessionBuilder};
use cdrs_tokio::cluster::NodeTcpConfigBuilder;
use cdrs_tokio::load_balancing::RoundRobinBalancingStrategy;
use cdrs_tokio::query::*;
use std::sync::Arc;
#[tokio::main]
async fn main() {
let cluster_config = NodeTcpConfigBuilder::new()
.with_contact_point("127.0.0.1:9042".into())
.build()
.await
.unwrap();
let session = TcpSessionBuilder::new(RoundRobinBalancingStrategy::new(), cluster_config).build();
let create_ks = "CREATE KEYSPACE IF NOT EXISTS test_ks WITH REPLICATION = { \
'class' : 'SimpleStrategy', 'replication_factor' : 1 };";
session
.query(create_ks)
.await
.expect("Keyspace create error");
}This project is licensed under either of
- Apache License, Version 2.0, (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)
at your option.