Please enable Javascript to view the contents

如何在 Go 中使用 Redis

 ·  ☕ 1 分鐘  ·  ✍️ Yuan

前言

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

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

主要內容

Redis Server

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

Docker 黨

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

Docker-compose 黨

docker-compose.yaml:

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

然後

1
docker-compose up

Go-Redis

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

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

連線到 redis

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
rdb := redis.NewClient(&redis.Options{
	Addr:	  "localhost:6379",
	Password: "", // no password set
	DB:		  0,  // use default DB
})

pong, err := rdb.Ping(ctx).Result()
if err != nil {
    panic(err)
}

寫入值

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

讀取值

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

完整檔案

main.go

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
func main() {
	ctx := context.Background()
	rdb := redis.NewClient(&redis.Options{
		Addr: "localhost:6379",
	})

	if pong, err := rdb.Ping(ctx).Result(); err != nil {
		panic(err.Error())
	} else {
		fmt.Println(pong)
	}

	if err := rdb.Set(ctx, "key", 1, 0).Err(); err != nil {
		panic(err.Error())
	}

	value, err := rdb.Get(ctx, "key").Int64()
	if err == redis.Nil {
		fmt.Printf("value - %d\n", 0)
	} else if err != nil {
		fmt.Printf("value - %s\n", err.Error())
	} else {
		fmt.Printf("value - %d\n", value)
	}
}

結果

1
2
PONG
value - 1

小結

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

參考連結


Yuan Li
作者
Yuan
Firmware Engineer


目錄