Skip to content

Structs and functions for implementing the Redis protocol.

License

Apache-2.0, MIT licenses found

Licenses found

Apache-2.0
LICENSE-APACHE
MIT
LICENSE-MIT
Notifications You must be signed in to change notification settings

NDNL/redis-protocol.rs

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

31 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Redis Protocol

License License Build Status Crates.io API docs

Structs and functions for implementing the Redis protocol.

Install

With cargo edit.

cargo add redis-protocol

Features

  • Supports RESP2 and RESP3, including streaming frames.
  • Encode and decode with BytesMut or slices.
  • Parse publish-subscribe messages.
  • Support cluster redirection errors.
  • Implements cluster key hashing.
  • Utility functions for converting between RESP2 and RESP3.

Examples

use redis_protocol::resp2::prelude::*;
use bytes::BytesMut;

fn main() {
  let frame = Frame::BulkString("foobar".into());
  let mut buf = BytesMut::new();
  
  let len = match encode_bytes(&mut buf, &frame) {
    Ok(l) => l,
    Err(e) => panic!("Error encoding frame: {:?}", e)
  };
  println!("Encoded {} bytes into buffer with contents {:?}", len, buf);
  
  let buf: BytesMut = "*3\r\n$3\r\nFoo\r\n$-1\r\n$3\r\nBar\r\n".into();
  let (frame, consumed) = match decode(&buf) {
    Ok(Some((f, c))) => (f, c),
    Ok(None) => panic!("Incomplete frame."),
    Err(e) => panic!("Error parsing bytes: {:?}", e)
  };
  println!("Parsed frame {:?} and consumed {} bytes", frame, consumed);
  
  let key = "foobarbaz";
  println!("Hash slot for {}: {}", key, redis_keyslot(key));
}

IndexMap

Enable the index-map feature to use IndexMap instead of HashMap and HashSet. This is useful for testing and may also be useful to callers.

Tests

To run the unit tests:

cargo test --features index-map

About

Structs and functions for implementing the Redis protocol.

Resources

License

Apache-2.0, MIT licenses found

Licenses found

Apache-2.0
LICENSE-APACHE
MIT
LICENSE-MIT

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Rust 100.0%