Rust के लिए Redis क्लाइंट: redis-rs लाइब्रेरी का अवलोकन

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

Rust के लिए Redis क्लाइंट: redis-rs लाइब्रेरी



redis-rs लाइब्रेरी Rust इकोसिस्टम में Redis के साथ काम करने के लिए मुख्य और सबसे लोकप्रिय क्लाइंट है। यह Redis के साथ इंटरैक्ट करने के लिए फीचर्स का एक पूरा सेट प्रदान करती है: सरल GET/SET कमांड से लेकर जटिल ट्रांज़ैक्शन, पाइपलाइन और Pub/Sub तक। सिंक्रोनस और एसिंक्रोनस (async/await) दोनों मोड के समर्थन के कारण, redis-rs स्क्रिप्ट से लेकर हाई-लोड वेब सर्वर तक किसी भी प्रोजेक्ट के लिए उपयुक्त है।



लाइब्रेरी शुद्ध Rust में लिखी गई है, मेमोरी के साथ सुरक्षित काम और टाइप-सुरक्षा का उपयोग करती है, जो रनटाइम त्रुटियों को कम करती है। सभी लोकप्रिय Redis डेटा प्रकार समर्थित हैं: स्ट्रिंग्स, लिस्ट्स, सेट्स, हैशेज़, सॉर्टेड सेट्स, बिटमैप्स, HyperLogLog और स्ट्रीम्स।



इंस्टॉलेशन और कनेक्शन



Cargo.toml फ़ाइल में डिपेंडेंसी जोड़ें:



[dependencies]redis = { version = "0.27", features = ["tokio-comp"] }


सिंक्रोनस उपयोग के लिए बस redis = "0.27" पर्याप्त है। एसिंक्रोनस के लिए, एक एक्ज़ीक्यूटर चुनें: tokio-comp (डिफ़ॉल्ट) या async-std-comp।



बेसिक उपयोग (सिंक्रोनस मोड)



लोकल Redis से कनेक्ट करने और सरल कमांड निष्पादित करने का उदाहरण:



use redis::Commands;

fn main() -> redis::RedisResult<()> { let client = redis::Client::open("redis://127.0.0.1:6379/")?; let mut con = client.get_connection()?;

con.set("my_key", "hello world")?; let value: String = con.get("my_key")?; println!("प्राप्त मान: {}", value);

// हैशेज़ के साथ काम con.hset("user:1", "name", "Alice")?; con.hset("user:1", "age", "30")?; let name: String = con.hget("user:1", "name")?; println!("उपयोगकर्ता का नाम: {}", name);

Ok(())}


स्वचालित डिसीरियलाइज़ेशन पर ध्यान दें: आप वह प्रकार निर्दिष्ट करते हैं जिसमें परिणाम को बदलना है (String, i32, Vec<String> आदि), और लाइब्रेरी सब कुछ स्वयं करती है।



Tokio के साथ एसिंक्रोनस मोड



उच्च-प्रदर्शन अनुप्रयोगों के लिए एसिंक्रोनस API का उपयोग करें:



use redis::AsyncCommands;use tokio;

#[tokio::main]async fn main() -> redis::RedisResult<()> { let client = redis::Client::open("redis://127.0.0.1:6379/")?; let mut con = client.get_multiplexed_async_connection().await?;

// TTL (कुंजी का जीवनकाल) के साथ सेट करना con.set_ex("temp_key", "अस्थायी मान", 60).await?; let val: Option<String> = con.get("temp_key").await?; println!("मान: {:?}", val);

// लिस्ट्स के साथ काम con.lpush("queue", "task1").await?; con.lpush("queue", "task2").await?; let tasks: Vec<String> = con.lrange("queue", 0, -1).await?; println!("कतार में कार्य: {:?}", tasks);

Ok(())}


एसिंक्रोनस क्लाइंट मल्टीप्लेक्स्ड कनेक्शन (कई अनुरोधों के लिए एक TCP सॉकेट) का उपयोग करता है, जो प्रदर्शन को काफी बढ़ाता है।



उन्नत सुविधाएँ



पाइपलाइन (कन्वेयर प्रोसेसिंग)



एक नेटवर्क कॉल में कई कमांड भेजने की अनुमति देता है, जो बैच ऑपरेशन को गति देता है:



use redis::pipe;

fn main() -> redis::RedisResult<()> { let client = redis::Client::open("redis://127.0.0.1:6379/")?; let mut con = client.get_connection()?;

let (val1, val2): (i32, i32) = redis::pipe() .cmd("INCR").arg("counter_a").ignore() .cmd("INCR").arg("counter_b").ignore() .cmd("GET").arg("counter_a").query(&mut con)? .cmd("GET").arg("counter_b").query(&mut con)?;

println!("काउंटर: {}, {}", val1, val2); Ok(())}


Pub/Sub (प्रकाशक-सब्सक्राइबर)



चैनलों की सदस्यता का उदाहरण:



use redis::pubsub::PubSubCommands;

fn main() -> redis::RedisResult<()> {

अनुशंसाएँ