インターネットとモバイル アプリケーションの急速な発展に伴い、データ処理は現代のアプリケーションに不可欠な部分となっています。データベース キャッシュ テクノロジーの重要性はますます高まっており、Redis は高性能のインメモリ アプリケーションとして人気が高まっています。この記事では、Go 言語で Redis を使用するための包括的なチュートリアルを紹介します。
Redis の使用を開始する前に、Redis サーバーをインストールして起動する必要があります。これを行うには、Redis をダウンロードし、Redis サーバー コマンドを実行します。 Redis を実行してサーバーを起動すると、Redis を使用して操作できるようになります。
Go 言語には、Redis サーバーとの接続と通信に使用できる多くの Redis クライアント ライブラリがあります。ここでは、最も人気のある Go Redis クライアント ライブラリの 1 つである go-redis を選択します。
go-redis をダウンロードしてインストールします:
go get github.com/go-redis/redis
Redis サーバーに接続します:
import ( "fmt" "github.com/go-redis/redis" ) func main() { client := redis.NewClient(&redis.Options{ Addr: "localhost:6379", // Redis 服务器地址 Password: "", // Redis 密码 DB: 0, // Redis 数据库 }) pong, err := client.Ping().Result() fmt.Println(pong, err) }
出力: PONG <nil>
この例では、Redis 接続を確立し、ping を送信して接続が正常かどうかを確認します。
Redis でのキーと値のペアの設定と取得:
err := client.Set("key", "value", 0).Err() if err != nil { panic(err) } val, err := client.Get("key").Result() if err != nil { panic(err) } fmt.Println("key", val)
出力: key value
この例では、SET を使用します。
コマンドは Redis にキーと値のペアを設定し、GET
コマンドを使用してキーと値のペアを取得します。
Redis には、より複雑な操作を行うための高度なコマンドが多数あります。以下に、よく使用される高度なコマンドをいくつか紹介します。
4.1 パブリッシュ/サブスクライブ
Redis は、複数のクライアントにメッセージを送信するために使用できるパブリッシュ/サブスクライブ モードを提供します。この例では、2 つのクライアントを作成します。1 つはチャネル foo
にサブスクライブし、もう 1 つはチャネル foo
にメッセージをパブリッシュします。
import ( "fmt" "github.com/go-redis/redis" ) func main() { client1 := redis.NewClient(&redis.Options{ Addr: "localhost:6379", Password: "", DB: 0, }) client2 := redis.NewClient(&redis.Options{ Addr: "localhost:6379", Password: "", DB: 0, }) pubsub := client2.Subscribe("foo") _, err := pubsub.Receive() if err != nil { panic(err) } err = client1.Publish("foo", "hello world").Err() if err != nil { panic(err) } msg, err := pubsub.ReceiveMessage() if err != nil { panic(err) } fmt.Println(msg.Channel, msg.Payload) }
出力: foo hello world
この例では、PUBLISH
コマンドを使用して、チャネル foo# にメッセージをパブリッシュします。 ## を選択し、
SUBSCRIBE コマンドを使用してチャネルに登録し、メッセージを受信します。メッセージを公開すると、サブスクライブしているクライアントでメッセージを受信します。
import ( "fmt" "github.com/go-redis/redis" ) func main() { client := redis.NewClient(&redis.Options{ Addr: "localhost:6379", Password: "", DB: 0, }) err := client.Watch(func(tx *redis.Tx) error { _, err := tx.Pipelined(func(pipe redis.Pipeliner) error { pipe.Set("key1", "hello") pipe.Set("key2", "world") return nil }) if err != nil { return err } val1, err := tx.Get("key1").Result() if err != nil { return err } fmt.Println("key1", val1) val2, err := tx.Get("key2").Result() if err != nil { return err } fmt.Println("key2", val2) return nil }, "key1", "key2") if err != nil { panic(err) } }
key1 hello
key2 world
WATCH コマンドを使用してトランザクションを作成します。そして、トランザクションに 2 つの
SET コマンドを追加します。次に、両方のキーを読み取って、SET 操作が成功したことを確認します。 SET 操作が失敗すると、トランザクション全体がキャンセルされます。
以上がGo での Redis の使用: 完全ガイドの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。