go-redis का परिचय: Go के लिए शक्तिशाली Redis क्लाइंट
Redis एक हाई-परफॉर्मेंस इन-मेमोरी की-वैल्यू डेटा स्टोर है। इसका उपयोग कैशिंग, सेशन मैनेजमेंट, मैसेज क्यू, रेटिंग और कई अन्य कामों के लिए किया जाता है। Go से Redis के साथ काम करने के लिए कई लाइब्रेरी हैं, और go-redis (पैकेज github.com/redis/go-redis/v9) सबसे लोकप्रिय, सक्रिय रूप से मेंटेन और फीचर-रिच लाइब्रेरी है।
यह लाइब्रेरी सभी Redis डेटा स्ट्रक्चर (स्ट्रिंग्स, लिस्ट्स, सेट्स, हैशेज़, सॉर्टेड सेट्स, HyperLogLog, स्ट्रीम्स, जियोस्पेशियल डेटा) के लिए एक क्लीन, इडियोमैटिक Go API प्रदान करती है और क्लस्टरिंग, Sentinel, Pub/Sub, पाइपलाइनिंग और Lua स्क्रिप्ट्स जैसी एडवांस्ड सुविधाओं को सपोर्ट करती है। go-redis Redis 7 और 8 को पूरी तरह से सपोर्ट करता है।
इस गाइड में हम इंस्टॉलेशन, मुख्य तरीके, सामान्य गलतियाँ और एक रियल-वर्ल्ड प्रैक्टिकल उदाहरण विस्तार से देखेंगे।
go-redis इंस्टॉलेशन
इंस्टॉलेशन मानक go get कमांड से की जाती है:
go get github.com/redis/go-redis/v9
इस कमांड को चलाने के बाद आपके go.mod में डिपेंडेंसी जुड़ जाएगी। सुनिश्चित करें कि आपके पास Go का वर्जन 1.18 या उससे ऊपर है।
आपको एक चालू Redis सर्वर (लोकल या रिमोट) की भी आवश्यकता होगी। टेस्टिंग के लिए आप Docker में Redis चला सकते हैं:
docker run --name my-redis -p 6379:6379 -d redis
त्वरित शुरुआत: कनेक्ट करें और पहला रिक्वेस्ट करें
main.go फ़ाइल बनाएं और एक सरल प्रोग्राम लिखें जो Redis से कनेक्ट हो, वैल्यू सेट और रीड करे।
package main
import (
"context"
"fmt"
"github.com/redis/go-redis/v9"
)
func main() {
// कॉन्टेक्स्ट बनाएं (context.Background() का उपयोग करने की सलाह दी जाती है)
ctx := context.Background()
// क्लाइंट बनाएं
rdb := redis.NewClient(&redis.Options{
Addr: "localhost:6379", // Redis सर्वर का पता
Password: "", // पासवर्ड (अगर है तो)
DB: 0, // डेटाबेस नंबर (डिफ़ॉल्ट 0)
})
// Ping से कनेक्शन चेक करें
pong, err := rdb.Ping(ctx).Result()
if err != nil {
panic(fmt.Sprintf("Redis से कनेक्ट नहीं हो सका: %v", err))
}
fmt.Println("कनेक्टेड:", pong)
// "name" की को "Alice" वैल्यू से सेट करें
err = rdb.Set(ctx, "name", "Alice", 0).Err()
if err != nil {
panic(err)
}
// "name" की से वैल्यू रीड करें
val, err := rdb.Get(ctx, "name").Result()
if err != nil {
panic(err)
}
fmt.Println("name:", val)
// प्रोग्राम खत्म होने पर कनेक्शन बंद करें
defer rdb.Close()
}
प्रोग्राम चलाएं:
go run main.go
आपको यह दिखना चाहिए:
कनेक्टेड: PONG
name: Alice
go-redis के मुख्य तरीके (8+)
go-redis के सभी तरीके *Cmd (या इसकी स्पेशलाइज़ेशन) ऑब्जेक्ट लौटाते हैं, जिसमें रिजल्ट और एरर पाने के लिए .Result(), सिर्फ वैल्यू पाने के लिए .Val() और सिर्फ एरर पाने के लिए .Err() मेथड होते हैं। यह रिजल्ट को हैंडल करने में लचीलापन देता है।
1. Set — की की वैल्यू सेट करना
क्या करता है: दिए गए की के लिए वैल्यू सेट करता है। TTL (टाइम-टू-लिव) सेट किया जा सकता है या 0 देकर अनंत समय के लिए स्टोर किया जा सकता है।
पैरामीटर:
ctx context.Context— एक्ज़ीक्यूशन टाइम कंट्रोल करने के लिए कॉन्टेक्स्टkey string— की का नामvalue interface{}— वैल्यू (सीरियलाइज़ होगी)expiration time.Duration— लाइफ़टाइम (0 — कोई TTL नहीं)
उदाहरण:
err := rdb.Set(ctx, "user:100", "John Doe", 10*time.Minute).Err()
if err != nil {
log.Fatal(err)
}