Kotlin के लिए Redis क्लाइंट: Lettuce और Kreds — तुलना और उदाहरण

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

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

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

Kotlin के लिए Redis क्लाइंट: लोकप्रिय लाइब्रेरी का अवलोकन और तुलना

\n\n

Redis एक उच्च-प्रदर्शन वाला की-वैल्यू डेटा स्टोर है, जिसका व्यापक रूप से कैशिंग, सत्र, कतारों और रीयल-टाइम एप्लिकेशन के लिए उपयोग किया जाता है। Kotlin भाषा के लिए कई परिपक्व क्लाइंट मौजूद हैं, जो Redis के साथ कुशलतापूर्वक इंटरैक्ट करने की अनुमति देते हैं। इस लेख में हम दो मुख्य लाइब्रेरी देखेंगे: Lettuce (एसिंक्रोनस, नॉन-ब्लॉकिंग) और Kreds (कोरूटीन समर्थन के साथ Kotlin के लिए विशेष)।

\n\n

1. Lettuce — JVM के लिए शक्तिशाली और लचीला क्लाइंट

\n\n

Lettuce Java पर एक एसिंक्रोनस Redis क्लाइंट है, जो Kotlin प्रोजेक्ट्स में शानदार काम करता है। यह सिंक्रोनस, एसिंक्रोनस (CompletableFuture पर) और रिएक्टिव (Project Reactor / RxJava) API का समर्थन करता है। Lettuce Spring Boot और माइक्रोसर्विसेज के लिए सबसे लोकप्रिय समाधानों में से एक है।

\n\n

कनेक्शन (Gradle)

\n
dependencies {\n    implementation("io.lettuce:lettuce-core:6.3.2.RELEASE")\n}
\n\n

सिंक्रोनस कनेक्शन और संचालन का उदाहरण

\n
import io.lettuce.core.RedisClient\nimport io.lettuce.core.api.sync.RedisCommands\n\nfun main() {\n    val client = RedisClient.create("redis://localhost:6379")\n    val connection = client.connect()\n    val commands: RedisCommands<String, String> = connection.sync()\n\n    // मान सेट करना और प्राप्त करना\n    commands.set("mykey", "Hello from Lettuce!")\n    val value = commands.get("mykey")\n    println("Value: $value") // Hello from Lettuce!\n\n    // हैश के साथ काम करना\n    commands.hset("user:1", "name", "Alice")\n    commands.hset("user:1", "age", "30")\n    val name = commands.hget("user:1", "name")\n    println("User name: $name")\n\n    connection.close()\n    client.shutdown()\n}
\n\n

कोरूटीन के साथ एसिंक्रोनस मोड

\n

Lettuce CompletableFuture के माध्यम से एसिंक्रोनस API का समर्थन करता है, जिसे await() का उपयोग करके Kotlin कोरूटीन के लिए आसानी से अनुकूलित किया जा सकता है:

\n
import kotlinx.coroutines.runBlocking\nimport kotlinx.coroutines.future.await\n\nfun main() = runBlocking {\n    val client = RedisClient.create("redis://localhost:6379")\n    val connection = client.connect()\n    val asyncCommands = connection.async()\n\n    val result = asyncCommands.set("coroutine-key", "Kotlin + Lettuce").await()\n    println("Set result: $result")\n\n    val value = asyncCommands.get("coroutine-key").await()\n    println("Value: $value")\n\n    connection.close()\n    client.shutdown()\n}
\n\n

2. Kreds — कोरूटीन के साथ Kotlin-प्रथम क्लाइंट

\n\n

Kreds एक आधुनिक Redis क्लाइंट है, जो पूरी तरह से Kotlin में लिखा गया है। यह मूल रूप से कोरूटीन, Flow और kotlinx.serialization के माध्यम से सीरियलाइज़ेशन का समर्थन करता है। Kreds अंडरहुड Netty का उपयोग करता है, लेकिन एक स्वच्छ Kotlin API प्रदान करता है।

\n\n

कनेक्शन (Gradle)

\n
dependencies {\n    implementation("io.ktor:kreds:0.9.0")\n}
\n\n

बुनियादी उपयोग का उदाहरण

\n
import io.kreds.client.RedisClient\n\nsuspend fun main() {\n    val client = RedisClient("localhost", 6379)\n\n    client.set("kreds-key", "Hello from Kreds!")\n    val value = client.get("kreds-key")\n    println("Value: $value")\n\n    // सूचियों के साथ काम करना\n    client.lpush("mylist", "A", "B", "C")\n    val item = client.rpop("mylist")\n    println("Popped: $item")\n\n    client.close()\n}
\n\n

चैनलों की सदस्यता के लिए Flow का उपयोग

\n

Kreds Kotlin Flow के माध्यम से Pub/Sub का समर्थन करता है, जो रिएक्टिव एप्लिकेशन के लिए सुविधाजनक है:

\n
import io.kreds.client.RedisClient\nimport kotlinx.coroutines.flow.collect\n\nsuspend fun main() {\n    val client = RedisClient("localhost", 6379)\n\n    client.subscribe("channel-1").collect { message ->\n        println("Received: ${message.payload}")\n    }\n}
\n\n

3. Lettuce और Kreds की तुलना

\n\n\n \n \n

अनुशंसाएँ

विशेषता