如何在 Go 中使用 Redis

Yuan Yuan 2022.08.222 分鐘閱讀

前言

最近想試著使用 Redis ,於是乎這一篇就誕生了!

本文會使用 Docker 來建立測試用的 Redis Server,並使用 Go 語言來寫入、讀取資料。

主要內容

Redis Server

我們要使用 Docker 來快速的起一個 redis。雖然參考官方文件輸入 docker 指令就可以了,但筆者還是喜歡用 docker-compose 進行操作。所以下列也提供 docker-compse.yaml 的內容。

Docker 黨

bash
1docker run --name my-redis --rm -it -v 6379:6379 redis:7-alpine

Docker-compose 黨

docker-compose.yaml:

yaml
1version: "3.9"
2services:
3  redis:
4    image: redis:7-alpine
5    ports:
6      - 6379:6379
7    restart: "no"

然後

bash
1docker-compose up

Go-Redis

這邊也是照著官方的文件操作就可以了!

bash
1go get github.com/go-redis/redis/v9

連線到 redis

go
 1rdb := redis.NewClient(&redis.Options{
 2	Addr:	  "localhost:6379",
 3	Password: "", // no password set
 4	DB:		  0,  // use default DB
 5})
 6
 7pong, err := rdb.Ping(ctx).Result()
 8if err != nil {
 9    panic(err)
10}

寫入值

go
1if err := rdb.Set(ctx, "key2", "value_2", 0).Err(); err != nil {
2	return err
3}

讀取值

go
1value, err := client.Get(ctx, "key2").Result()
2if err == redis.Nil {
3    fmt.Println("value does not exist")
4} else if err != nil {
5    fmt.Println("client.Get failed", err)
6} else {
7    fmt.Println("key2", value)
8}

完整檔案

main.go

go
 1func main() {
 2	ctx := context.Background()
 3	rdb := redis.NewClient(&redis.Options{
 4		Addr: "localhost:6379",
 5	})
 6
 7	if pong, err := rdb.Ping(ctx).Result(); err != nil {
 8		panic(err.Error())
 9	} else {
10		fmt.Println(pong)
11	}
12
13	if err := rdb.Set(ctx, "key", 1, 0).Err(); err != nil {
14		panic(err.Error())
15	}
16
17	value, err := rdb.Get(ctx, "key").Int64()
18	if err == redis.Nil {
19		fmt.Printf("value - %d\n", 0)
20	} else if err != nil {
21		fmt.Printf("value - %s\n", err.Error())
22	} else {
23		fmt.Printf("value - %d\n", value)
24	}
25}

結果

bash
1PONG
2value - 1

小結

本篇只是順手將找尋的資料以及測試用的程式記下來。未來如果有新的發現,或許會繼續的更新!

參考連結