Redis Crud を簡単に実行する例

Patricia Arquette
リリース: 2024-08-18 06:45:41
オリジナル
773 人が閲覧しました

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
ログイン後にコピー

マネージャー Redis

manage.go へのファイルを作成します。これには、他のモジュールやサービスなどで Redis との接続を取得するためのメソッドが含まれます。

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 }
ログイン後にコピー

エンティティ (顧客) リポジトリを管理するための Struct の作成

Redis 接続を管理するための構造体を作成し、Redis エンティティと対話するためのすべてのメソッド (CRUD 操作とクエリ) を取得します
この構造体を使用すると、エンティティ (顧客) データにアクセスする必要があるときはいつでも、それをインスタンス化し、リポジトリ パターンとして使用し始めることができます。

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 }
ログイン後にコピー

構造体エンティティの作成

Customers エンティティに、bun フィールドにマップされたタグを追加します。
redis:"-" は、redis に保存するフィールドとの関係を作成します。 1 つのファイルが必要な場合、または構造体を保存しない場合は、タグを追加しないでください。

type Customer struct { ID string `redis:"id"` Name string `redis:"name"` Email string `redis:"email"` Phone string `redis:"phone"` Age int `redis:"age"` }
ログイン後にコピー

CRUDメソッド

エンティティから情報を保存、更新、または取得するメソッドの例。
これらのメソッドは、CustomersRepo エンティティから使用されます。
彼らは情報を含む顧客エンティティを受け取り、操作に応じて結果を返します。

新しいレコードを保存する

func (c *CustomerRepo) Save(customer *Customer) error { return c.Cli.Client.HSet(context.TODO(), customer.ID, customer).Err() }
ログイン後にコピー

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 }
ログイン後にコピー

新しい記録を更新する

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() }
ログイン後にコピー

コード例を確認してください

テスト用の Redis サンプル

以上がRedis Crud を簡単に実行する例の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:dev.to
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!