"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > रेडिस क्रूड का त्वरित उदाहरण लें

रेडिस क्रूड का त्वरित उदाहरण लें

2024-11-19 को प्रकाशित
ब्राउज़ करें:787

Go Redis Crud quickly example

निर्भरताएँ और पर्यावरण चर स्थापित करें

डेटाबेस कनेक्शन से मानों को अपने से बदलें।

#env file
REDIS_ADDRESS=localhost
REDIS_PORT=6379
REDIS_PASSWORD=123456
REDIS_DB=0

#install on go
go get github.com/redis/go-redis/v9

मैनेजर रेडिस

manage.go के लिए एक फ़ाइल बनाएं इसमें उदाहरण के लिए अन्य मॉड्यूल और सेवाओं में रेडिस के साथ कनेक्शन प्राप्त करने की एक विधि शामिल होगी।

package main

import (
    "fmt"
    "github.com/redis/go-redis/v9"
    "os"
    "strconv"
)

const CustomerDb = 0

type RedisManager struct {
    Db     int
    Client *redis.Client
}

func NewRedisClient(customerDb int) (*RedisManager, error) {
    address := os.Getenv("REDIS_ADDRESS")
    if address == "" {
        return nil, fmt.Errorf("REDIS_ADDRESS is not set")
    }
    password := os.Getenv("REDIS_PASSWORD")
    if password == "" {
        return nil, fmt.Errorf("REDIS_PASSWORD is not set")
    }
    port := os.Getenv("REDIS_PORT")
    if port == " " {
        return nil, fmt.Errorf("REDIS_PORT is not set")
    }
    db := os.Getenv("REDIS_DB")
    if db == "" {
        return nil, fmt.Errorf("REDIS_DB is not set")
    }
    redisDb, err := strconv.Atoi(db)
    if err != nil {
        return nil, fmt.Errorf("REDIS_DB is not a number")
    }
    cli := redis.NewClient(&redis.Options{
        Addr:     fmt.Sprintf("%s:%s", address, port),
        Password: password,
        DB:       redisDb,
    })
    return &RedisManager{
        Client: cli,
        Db:     customerDb,
    }, nil
}
func (rd *RedisManager) SetDb(db int) {
    rd.Db = db
}

इकाई (ग्राहक) भंडार को प्रबंधित करने के लिए संरचना बनाएं

रेडिस कनेक्शन को प्रबंधित करने के लिए एक संरचना बनाएं और रेडिस इकाई (सीआरयूडी संचालन और क्वेरी) के साथ बातचीत करने के लिए सभी विधियां प्राप्त करें
इस संरचना के साथ, जब भी हमें इकाई (ग्राहक) डेटा तक पहुंचने की आवश्यकता होती है, हम उदाहरण दे सकते हैं और इसे रिपॉजिटरी पैटर्न के रूप में उपयोग करना शुरू कर सकते हैं।

type CustomerRepo struct {
    Cli *RedisManager
    Db  int
}

func NewCustomerRepo() (*CustomerRepo, error) {
    cli, err := NewRedisClient(CustomerDb)
    if err != nil {
        return nil, err
    }
    return &CustomerRepo{
        Cli: cli,
    }, nil
}

संरचना इकाई बनाएं

ग्राहक इकाई पर बन फ़ील्ड के साथ मैप किए गए टैग जोड़ें।
रेडिस:"-" रेडिस पर बचत करने के लिए फ़ील्ड के साथ संबंध बनाएं। यदि आप चाहते हैं कि एक फ़ाइल या संरचना सहेजी न जाए तो बस टैग न जोड़ें।

type Customer struct {
    ID    string `redis:"id"`
    Name  string `redis:"name"`
    Email string `redis:"email"`
    Phone string `redis:"phone"`
    Age   int    `redis:"age"`
}

सीआरयूडी विधियां

इकाई से जानकारी संग्रहीत करने, अद्यतन करने या प्राप्त करने के लिए एक विधि उदाहरण।
इन विधियों का उपयोग CustomersRepo इकाई से किया जाता है।
उन्हें जानकारी के साथ एक ग्राहक इकाई प्राप्त हुई और ऑपरेशन के आधार पर परिणाम लौटाया गया।

नया रिकॉर्ड सहेजें

func (c *CustomerRepo) Save(customer *Customer) error {
    return c.Cli.Client.HSet(context.TODO(), customer.ID, customer).Err()
}

आईडी के लिए एक रिकॉर्ड प्राप्त करें

func (c *CustomerRepo) Get(id string) (*Customer, error) {
    customer := &Customer{}
    resMap := c.Cli.Client.HGetAll(context.TODO(), id)
    if resMap.Err() != nil {
        return nil, resMap.Err()
    }
    if len(resMap.Val()) == 0 {
        return nil, nil
    }
    err := resMap.Scan(customer)
    if err != nil {
        return nil, err
    }
    return customer, nil
}

एक नया रिकॉर्ड अपडेट करें

func (c *CustomerRepo) Update(customer *Customer) error {
    return c.Cli.Client.HSet(context.TODO(), customer.ID, customer).Err()
}

नया रिकॉर्ड हटाएँ

func (c *CustomerRepo) Delete(id string) error {
    return c.Cli.Client.Del(context.TODO(), id).Err()
}

कोड उदाहरण की समीक्षा करें

इसके परीक्षण के लिए रेडिस उदाहरण

विज्ञप्ति वक्तव्य यह लेख यहां पुन: प्रस्तुत किया गया है: https://dev.to/luigiescalante/go-redis-crud-quickly-example-2agj?1 यदि कोई उल्लंघन है, तो कृपया इसे हटाने के लिए स्टडी_गोलंग@163.com से संपर्क करें।
नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3