Pergi Redis Crud cepat contoh

WBOY
Lepaskan: 2024-08-18 06:45:41
asal
910 orang telah melayarinya

Go Redis Crud quickly example

Pasang kebergantungan dan pembolehubah persekitaran

Ganti nilai daripada sambungan pangkalan data dengan anda.

#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
Salin selepas log masuk

Pengurus Redis

Buat fail untuk manage.go Ini akan mengandungi kaedah untuk mendapatkan sambungan dengan redis misalnya dalam modul dan perkhidmatan lain.

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
}

Salin selepas log masuk

Cipta Struct untuk mengurus repositori entiti (pelanggan).

Buat struct untuk mengurus sambungan redis dan Dapatkan semua kaedah untuk berinteraksi dengan entiti redis (operasi dan pertanyaan CRUD)
Dengan struct ini, bila-bila masa kita perlu mengakses data entiti (pelanggan), kita boleh contoh dan mula menggunakannya sebagai corak repositori.

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
}
Salin selepas log masuk

Buat entiti Struct

Pada entiti Pelanggan tambahkan teg untuk dipetakan dengan medan bun.
Redis:"-" buat de relation dengan medan untuk menjimatkan redis. Jika anda mahu satu fail atau struct doenst save cuma jangan tambah tag.

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

kaedah CRUD

Contoh kaedah untuk menyimpan, mengemas kini atau mendapatkan maklumat daripada entiti.
Kaedah ini digunakan daripada entiti CustomersRepo.
Mereka menerima entiti pelanggan dengan maklumat dan bergantung pada operasi mengembalikan hasilnya.

Simpan rekod baharu

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

Dapatkan rekod untuk ID

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
}
Salin selepas log masuk

Kemas kini rekod baharu

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

Padamkan rekod baharu

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

Semak contoh kod

Redis contoh untuk mengujinya

Atas ialah kandungan terperinci Pergi Redis Crud cepat contoh. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:dev.to
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!