Java के लिए Redis क्लाइंट: Jedis, Lettuce और Redisson — विस्तृत गाइड
Redis एक उच्च-प्रदर्शन वाला की-वैल्यू डेटा स्टोर है जो रैम में काम करता है। Java एप्लिकेशन से Redis के साथ इंटरैक्ट करने के लिए कई परिपक्व लाइब्रेरी मौजूद हैं। इस लेख में हम Java के लिए तीन सबसे लोकप्रिय Redis क्लाइंट्स: Jedis, Lettuce और Redisson पर चर्चा करेंगे। आप उनकी विशेषताओं, लाभों को जानेंगे और त्वरित शुरुआत के लिए तैयार कोड उदाहरण प्राप्त करेंगे।
1. Jedis — सरल और हल्का क्लाइंट
Jedis एक न्यूनतम, थ्रेड-असुरक्षित क्लाइंट है जो सरल प्रोजेक्ट्स और मोनोलिथिक एप्लिकेशन के लिए आदर्श है। यह एक सरल API के माध्यम से Redis कमांड तक सीधी पहुँच प्रदान करता है। Jedis 'आउट ऑफ द बॉक्स' एसिंक्रोनस कॉल का समर्थन नहीं करता है, लेकिन उपयोग में आसानी से इसकी भरपाई करता है।
डिपेंडेंसी जोड़ना (Maven)
<dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>5.1.0</version></dependency>उदाहरण: कनेक्शन और बुनियादी संचालन
import redis.clients.jedis.Jedis;
public class JedisExample { public static void main(String[] args) { // Redis से कनेक्शन (डिफ़ॉल्ट localhost:6379) try (Jedis jedis = new Jedis("localhost", 6379)) { // प्रमाणीकरण (यदि पासवर्ड सेट है) // jedis.auth("password");
// मान सेट करना jedis.set("user:100", "Alice"); // मान प्राप्त करना String user = jedis.get("user:100"); System.out.println("User: " + user); // User: Alice
// हैश के साथ कार्य करना jedis.hset("user:200", "name", "Bob"); jedis.hset("user:200", "age", "30"); String name = jedis.hget("user:200", "name"); System.out.println("Name: " + name); // Name: Bob
// TTL सेट करना (की का जीवनकाल) jedis.expire("user:100", 60); // की 60 सेकंड तक जीवित रहती है } }}Jedis के फायदे और नुकसान
- फायदे: न्यूनतम सीखने की अवस्था, हल्का वजन, Redis कमांड का पूर्ण समर्थन।
- नुकसान: थ्रेड-सुरक्षित नहीं (कनेक्शन पूल की आवश्यकता), कोई एसिंक्रोनस API नहीं, वितरित डेटा संरचनाओं के लिए कोई अंतर्निहित समर्थन नहीं।
2. Lettuce — एसिंक्रोनस और रिएक्टिव क्लाइंट
Lettuce एक आधुनिक, थ्रेड-सुरक्षित Redis क्लाइंट है जो Netty पर बनाया गया है। यह सिंक्रोनस, एसिंक्रोनस और रिएक्टिव (Reactive Streams) प्रोग्रामिंग का समर्थन करता है। Lettuce उच्च-लोड और एसिंक्रोनस Java 8+ एप्लिकेशन के लिए आदर्श है।
डिपेंडेंसी जोड़ना (Maven)
<dependency> <groupId>io.lettuce</groupId> <artifactId>lettuce-core</artifactId> <version>6.3.1.RELEASE</version></dependency>उदाहरण: एसिंक्रोनस कनेक्शन
import io.lettuce.core.RedisClient;import io.lettuce.core.api.StatefulRedisConnection;import io.lettuce.core.api.async.RedisAsyncCommands;
import java.util.concurrent.CompletableFuture;
public class LettuceAsyncExample { public static void main(String[] args) { // क्लाइंट बनाएँ RedisClient redisClient = RedisClient.create("redis://localhost:6379"); // कनेक्शन खोलें try (StatefulRedisConnection<String, String> connection = redisClient.connect()) { RedisAsyncCommands<String, String> async = connection.async(); // एसिंक्रोनस मान सेट करना CompletableFuture<String> setFuture = async.set("key:1", "Hello from Lettuce!").toCompletableFuture(); // एसिंक्रोनस मान प्राप्त करना