17 releases (10 breaking)

✓ Uses Rust 2018 edition

0.15.1 Jan 15, 2020
0.14.0 Jan 8, 2020
0.13.0 Oct 14, 2019
0.11.0 Jul 19, 2019
0.0.2 Nov 23, 2014

#2 in Database interfaces

Download history 5093/week @ 2019-10-13 6078/week @ 2019-10-20 5405/week @ 2019-10-27 6767/week @ 2019-11-03 6976/week @ 2019-11-10 6150/week @ 2019-11-17 5809/week @ 2019-11-24 6846/week @ 2019-12-01 7858/week @ 2019-12-08 5820/week @ 2019-12-15 2094/week @ 2019-12-22 2618/week @ 2019-12-29 5755/week @ 2020-01-05 7060/week @ 2020-01-12 7256/week @ 2020-01-19

24,119 downloads per month
Used in 92 crates (81 directly)

BSD-3-Clause

235KB
4.5K SLoC

redis-rs

Build Status crates.io

Redis-rs is a high level redis library for Rust. It provides convenient access to all Redis functionality through a very flexible but low-level API. It uses a customizable type conversion trait so that any operation can return results in just the type you are expecting. This makes for a very pleasant development experience.

The crate is called redis and you can depend on it via cargo:

[dependencies]
redis = "0.15.1"

Documentation on the library can be found at docs.rs/redis.

Note: redis-rs requires at least Rust 1.39.

Basic Operation

To open a connection you need to create a client and then to fetch a connection from it. In the future there will be a connection pool for those, currently each connection is separate and not pooled.

Many commands are implemented through the Commands trait but manual command creation is also possible.

extern crate redis;
use redis::Commands;

fn fetch_an_integer() -> redis::RedisResult<isize> {
    // connect to redis
    let client = redis::Client::open("redis://127.0.0.1/")?;
    let mut con = client.get_connection()?;
    // throw away the result, just make sure it does not fail
    let _ : () = con.set("my_key", 42)?;
    // read back the key and return it.  Because the return value
    // from the function is a result for integer this will automatically
    // convert into one.
    con.get("my_key")
}

Development

If you want to develop on the library there are a few commands provided by the makefile:

To build:

$ make

To test:

$ make test

To run benchmarks:

$ make bench

To build the docs:

$ make docs

Dependencies

~5MB
~110K SLoC