embedded-redis 0.8.0

A no_std Redis client
Documentation
use crate::network::ConnectionHandler;
use bytes::Bytes;
use core::net::SocketAddr;
use core::str::FromStr;
use std_embedded_nal::Stack;
use std_embedded_time::StandardClock;
use test::Bencher;

macro_rules! setup_client {
    ($client:ident) => {
        let mut stack = Stack::default();
        let clock = StandardClock::default();

        let server_address = SocketAddr::from_str("127.0.0.1:6379").unwrap();
        let mut connection_handler = ConnectionHandler::resp3(server_address);
        let $client = connection_handler.connect(&mut stack, Some(&clock)).unwrap();
    };
}

#[bench]
fn benchmark_publish_async(bencher: &mut Bencher) {
    setup_client!(client);

    let topic = Bytes::from_static(b"test");
    let data = Bytes::from_static(&[b'A'; 256]);

    bencher.iter(|| {
        let _ = client.publish(topic.clone(), data.clone());
    });

    client.close();
}

#[bench]
fn benchmark_publish_sync(bencher: &mut Bencher) {
    setup_client!(client);

    let topic = Bytes::from_static(b"test");
    let data = Bytes::from_static(&[b'A'; 256]);

    bencher.iter(|| {
        client.publish(topic.clone(), data.clone()).unwrap().wait().unwrap();
    });

    client.close();
}