#client-connection #memory-safe #connection-pool #pooling #pure #100

redi-rs

Lightweight async Redis client with connection pooling written in pure Rust and 100% memory safe

1 unstable release

0.1.0-alpha.0 Apr 22, 2023

#2084 in Database interfaces

MIT license

10KB
146 lines

redirs Logo

redi-rs (or redirs)

redi-rs is a Lightweight Redis client with connection pooling written in Rust and 100% memory safe

redi-rs is a Redis client written in Rust. It is a lightweight client with connection pooling and 100% memory safe. You can use it in your Rust project to connect to Redis and perform operations.

Features

  • Connection pooling

To Do

  • Typed commands (pool.setex("foo", 10, "bar"), pool.get("foo") or pool.hset("foo", "bar", "baz")
  • TLS support
  • Redis Cluster support
  • Redis Streams support
  • Redis Pub/Sub support

Usage

Add this to your Cargo.toml:

[dependencies]
redi-rs = "0.1.0-alpha.0"

Example

use std::net::SocketAddr;
use std::str::FromStr;

use redi_rs::RedisPool;

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    let mut pool = RedisPool::from_str("localhost:6379").unwrap();
    // Or from SocketAddr
    // let mut pool = RedisPool::from(SocketAddr::from(([127, 0, 0, 1], 6379)));

    pool.max_connections(10).establish_pool().await?;

    pool.send_command("SET foo bar").await?;

    Ok(())
}

More examples can be found in the examples directory.

License

redi-rs is licensed under the MIT license. See LICENSE for more information.

Contributing

Open an issue or a pull request.

Dependencies

~2.4–8MB
~58K SLoC