Expand description
§Redis Protocol
Structs and functions for implementing the RESP2 and RESP3 protocol.
§Examples
use redis_protocol::resp2::prelude::*;
use bytes::{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: Bytes = "*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.as_bytes()));
}
Note: if callers are not using the index-map
feature then substitute std::collections::HashMap
for any IndexMap
types in these docs. rustdoc
doesn’t have a great way to show type substitutions based on feature flags.
Modules§
- resp2
- Types and functions for implementing the RESP2 protocol.
- resp3
- Types and functions for implementing the RESP3 protocol.
- types
- Error types and general redis protocol types.
Constants§
- ZEROED_
KB - A pre-defined zeroed out KB of data, used to speed up extending buffers while encoding.
Functions§
- digits_
in_ number - Returns the number of bytes necessary to encode a string representation of
d
. - redis_
keyslot - Map a Redis key to its cluster key slot.
- resp2_
frame_ to_ resp3 - Utility function to translate RESP2 frames to RESP3 frames.