1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88
//! Redis client for ntex framework. //! //! # Example //! //! ```rust //! use ntex_redis::{cmd, RedisConnector}; //! # use rand::{thread_rng, Rng}; //! # use rand::distributions::Alphanumeric; //! # fn gen_random_key() -> String { //! # let key: String = thread_rng().sample_iter(&Alphanumeric).take(12).map(char::from).collect(); //! # key //! # } //! //! #[ntex::main] //! async fn main() -> Result<(), Box<dyn std::error::Error>> { //! let redis = RedisConnector::new("127.0.0.1:6379").connect().await?; //! let key = gen_random_key(); //! //! // create list with one value //! redis.exec(cmd::LPush(&key, "value")); //! //! // get value by index //! let value = redis.exec(cmd::LIndex(&key, 0)).await?; //! assert_eq!(value.unwrap(), "value"); //! //! // remove key //! redis.exec(cmd::Del(&key)).await?; //! //! Ok(()) //! } //! ``` mod client; pub mod cmd; pub mod codec; mod connector; pub mod errors; mod simple; // mod transport; pub use self::client::{Client, CommandResult}; pub use self::connector::RedisConnector; pub use self::simple::SimpleClient; /// Macro to create a request array, useful for preparing commands to send. Elements can be any type, or a mixture /// of types, that satisfy `Into<Request>`. /// /// # Examples /// /// ```rust /// #[macro_use] /// extern crate ntex_redis; /// /// fn main() { /// let value = format!("something_{}", 123); /// array!["SET", "key_name", value]; /// } /// ``` /// /// For variable length Redis commands: /// /// ```rust /// #[macro_use] /// extern crate ntex_redis; /// /// fn main() { /// let data = vec!["data", "from", "somewhere", "else"]; /// let command = array!["RPUSH", "mykey"].extend(data); /// } /// ``` #[macro_export] macro_rules! array { ($($e:expr),*) => {{ $crate::codec::Request::Array(vec![$($e.into(),)*]) }} } #[cfg(test)] pub fn gen_random_key() -> String { use rand::distributions::Alphanumeric; use rand::{thread_rng, Rng}; let key: String = thread_rng() .sample_iter(&Alphanumeric) .take(12) .map(char::from) .collect(); key }