RediStack: Swift (iOS/macOS) के लिए एसिंक्रोनस Redis क्लाइंट
RediStack एक आधुनिक, पूरी तरह से एसिंक्रोनस क्लाइंट है जो Redis के साथ काम करने के लिए Swift में लिखा गया है। यह लाइब्रेरी SwiftNIO फ्रेमवर्क पर आधारित है, जो उच्च प्रदर्शन और कम मेमोरी खपत सुनिश्चित करता है। RediStack उन iOS और macOS एप्लिकेशन के लिए आदर्श है जिन्हें तेज़ कैशिंग, सत्र प्रबंधन, संदेश कतार या Pub/Sub कार्यक्षमता की आवश्यकता होती है।
मुख्य विशेषताएं
- Swift Concurrency (async/await) और Combine पर आधारित पूर्ण एसिंक्रोनसिटी
- सभी प्रमुख Redis डेटा प्रकारों का समर्थन: स्ट्रिंग्स, लिस्ट्स, सेट्स, हैशेज़, स्ट्रीम्स
- स्वचालित पुनःकनेक्शन के साथ अंतर्निहित Pub/Sub समर्थन
- स्वचालित कनेक्शन पूलिंग (Connection Pool)
- Redis Cluster और Sentinel के लिए समर्थन
- सुरक्षित कनेक्शन के लिए SSL/TLS एन्क्रिप्शन
- Xcode में ऑटो-कम्प्लीशन के साथ टाइप-सेफ कमांड
Swift Package Manager के साथ इंस्टॉलेशन
अपने Package.swift में या Xcode के माध्यम से RediStack जोड़ें:
// Package.swiftdependencies: [ .package(url: "https://github.com/RediStack/RediStack.git", from: "1.6.0")],targets: [ .target(name: "YourApp", dependencies: ["RediStack"])]त्वरित आरंभ: Redis से कनेक्शन
शुरू करने के लिए, एक कनेक्शन पूल बनाएं और सरल कमांड निष्पादित करें:
import RediStackimport NIO
// EventLoopGroup बनाएंlet eventLoopGroup = MultiThreadedEventLoopGroup(numberOfThreads: 1)
// कनेक्शन पूल कॉन्फ़िगर करेंlet pool = RedisConnectionPool( configuration: .init( initialServerConnectionAddresses: [try .init(hostname: "localhost", port: 6379)], maximumConnectionCount: .maximumActiveConnections(5) ), boundEventLoop: eventLoopGroup.next())
// Redis के साथ एसिंक्रोनस कार्यTask { do { // स्ट्रिंग सेट और प्राप्त करना try await pool.set("greeting", to: "Hello from Swift!") let value = try await pool.get("greeting", as: String.self) print("प्राप्त: \\(value ?? "nil")") // "प्राप्त: Hello from Swift!" // लिस्ट के साथ कार्य try await pool.lpush(["apple", "banana", "cherry"], into: "fruits") let fruits = try await pool.lrange(from: "fruits", firstIndex: 0, lastIndex: -1, as: [String].self) print("फल: \\(fruits)") // ["cherry", "banana", "apple"] } catch { print("Redis त्रुटि: \\(error)") }}उदाहरण: Pub/Sub (प्रकाशक-सदस्य)
RediStack स्वचालित सदस्यता पुनर्स्थापना के साथ पूर्ण Pub/Sub का समर्थन करता है:
import RediStackimport NIO
let eventLoopGroup = MultiThreadedEventLoopGroup(numberOfThreads: 2)let pool = RedisConnectionPool(...)
// सदस्यTask { let subscriber = pool.makeSubscriber(eventLoop: eventLoopGroup.next()) // चैनल की सदस्यता लें await subscriber.subscribe(to: "notifications") { channel, message in print("चैनल \\(channel) पर प्राप्त: \\(message.string ?? "")") } // सदस्यता त्रुटियों को संभालें subscriber.onError = { error in print("Pub/Sub त्रुटि: \\(error)") }}
// प्रकाशक (संदेश भेजना)Task { try await pool.publish("नई सूचना", to: "notifications")}हैशेज़ और ट्रांज़ैक्शन के साथ कार्य
ट्रांज़ैक्शन के साथ हैशेज़ और परमाणु संचालन का उपयोग करने का उदाहरण:
// हैश फ़ील्ड सेट करनाtry await pool.hmset("user:1001", with: [ "name": "इवान पेत्रोव", "email": "ivan@example.com", "age": "30"])
// सभी फ़ील्ड प्राप्त करनाlet user = try await pool.hgetall(from: "user:1001")print("नाम: \\(user["name"]?.string ?? "")") // "नाम: इवान पेत्रोव"
// ट्रांज़ैक्शन (परमाणु निष्पादन)try await pool.transaction { transaction in transaction.inc