13 releases (7 breaking)

0.8.1 Aug 10, 2023
0.8.0 Apr 5, 2023
0.7.2 Feb 7, 2023
0.7.0 Jul 16, 2021
0.1.1 Nov 15, 2019

#1967 in Database interfaces

Download history 1292/week @ 2025-09-18 1449/week @ 2025-09-25 1679/week @ 2025-10-02 1456/week @ 2025-10-09 1585/week @ 2025-10-16 1627/week @ 2025-10-23 1787/week @ 2025-10-30 2251/week @ 2025-11-06 1692/week @ 2025-11-13 7219/week @ 2025-11-20 11775/week @ 2025-11-27 8330/week @ 2025-12-04 10502/week @ 2025-12-11 4505/week @ 2025-12-18 271/week @ 2025-12-25 9585/week @ 2026-01-01

26,972 downloads per month
Used in 7 crates (6 directly)

MIT license

51KB
1K SLoC

MIT licensed

⚠️ DEPRECATED! ⚠️

The functionality of this crate has been merged into the main redis-rs project.

⚠️ DEPRECATED! ⚠️

A Rust crate implementing a Redis cluster client.

Documentation is available at here.

This library builds upon the redis-rs crate to enable working with a Redis cluster (instead of single Redis nodes).

Example

extern crate futures;
extern crate tokio;
use futures::prelude::*;
use redis_cluster_async::{Client, redis::cmd};

fn main() {
    let nodes = vec!["redis://127.0.0.1:6379/", "redis://127.0.0.1:6378/", "redis://127.0.0.1:6377/"];

    let mut runtime = tokio::runtime::Runtime::new().unwrap();

    let client = Client::open(nodes).unwrap();
    let (_, res): (_, String) = runtime.block_on(client.get_connection()
        .and_then(|connection| {
            cmd("SET").arg("test").arg("test_data").clone()
                .query_async(connection)
                .and_then(|(connection, ())|
                    cmd("GET").arg("test")
                        .query_async(connection)
                )
        })
        )
        .unwrap();

    assert_eq!(res, "test_data");
}

Pipelining

extern crate futures;
extern crate tokio;

use futures::prelude::*;
use redis_cluster_async::{Client, redis::{PipelineCommands, pipe}};

fn main() {
    let nodes = vec!["redis://127.0.0.1:6379/", "redis://127.0.0.1:6378/", "redis://127.0.0.1:6377/"];

    let mut runtime = tokio::runtime::Runtime::new().unwrap();

    let client = Client::open(nodes).unwrap();
    let _: (_, ()) = runtime.block_on(
        client.get_connection().and_then(|connection| {
            let key = "test";

            pipe()
                .rpush(key, "123").ignore()
                .ltrim(key, -10, -1).ignore()
                .expire(key, 60).ignore()
                .query_async(connection)
        }))
        .unwrap();

}

Acknowledgements

This project is built upon the synchronous redis cluster implementation in https://github.com/atuk721/redis-cluster-rs .

Dependencies

~8–23MB
~297K SLoC