Kotlin के लिए Redis क्लाइंट: लोकप्रिय लाइब्रेरी का अवलोकन और तुलना
\n\nRedis एक उच्च-प्रदर्शन वाला की-वैल्यू डेटा स्टोर है, जिसका व्यापक रूप से कैशिंग, सत्र, कतारों और रीयल-टाइम एप्लिकेशन के लिए उपयोग किया जाता है। Kotlin भाषा के लिए कई परिपक्व क्लाइंट मौजूद हैं, जो Redis के साथ कुशलतापूर्वक इंटरैक्ट करने की अनुमति देते हैं। इस लेख में हम दो मुख्य लाइब्रेरी देखेंगे: Lettuce (एसिंक्रोनस, नॉन-ब्लॉकिंग) और Kreds (कोरूटीन समर्थन के साथ Kotlin के लिए विशेष)।
\n\n1. Lettuce — JVM के लिए शक्तिशाली और लचीला क्लाइंट
\n\nLettuce Java पर एक एसिंक्रोनस Redis क्लाइंट है, जो Kotlin प्रोजेक्ट्स में शानदार काम करता है। यह सिंक्रोनस, एसिंक्रोनस (CompletableFuture पर) और रिएक्टिव (Project Reactor / RxJava) API का समर्थन करता है। Lettuce Spring Boot और माइक्रोसर्विसेज के लिए सबसे लोकप्रिय समाधानों में से एक है।
\n\nकनेक्शन (Gradle)
\ndependencies {\n implementation("io.lettuce:lettuce-core:6.3.2.RELEASE")\n}\n\nसिंक्रोनस कनेक्शन और संचालन का उदाहरण
\nimport 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कोरूटीन के साथ एसिंक्रोनस मोड
\nLettuce CompletableFuture के माध्यम से एसिंक्रोनस API का समर्थन करता है, जिसे await() का उपयोग करके Kotlin कोरूटीन के लिए आसानी से अनुकूलित किया जा सकता है:
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\n2. Kreds — कोरूटीन के साथ Kotlin-प्रथम क्लाइंट
\n\nKreds एक आधुनिक Redis क्लाइंट है, जो पूरी तरह से Kotlin में लिखा गया है। यह मूल रूप से कोरूटीन, Flow और kotlinx.serialization के माध्यम से सीरियलाइज़ेशन का समर्थन करता है। Kreds अंडरहुड Netty का उपयोग करता है, लेकिन एक स्वच्छ Kotlin API प्रदान करता है।
\n\nकनेक्शन (Gradle)
\ndependencies {\n implementation("io.ktor:kreds:0.9.0")\n}\n\nबुनियादी उपयोग का उदाहरण
\nimport 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 का उपयोग
\nKreds Kotlin Flow के माध्यम से Pub/Sub का समर्थन करता है, जो रिएक्टिव एप्लिकेशन के लिए सुविधाजनक है:
\nimport 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\n3. Lettuce और Kreds की तुलना
\n\n| विशेषता | \n
|---|