डेटाबेस कनेक्शन से मानों को अपने से बदलें।
#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() }
इसके परीक्षण के लिए रेडिस उदाहरण
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3