iT邦幫忙

2021 iThome 鐵人賽

DAY 27
0

前言

前兩篇我們介紹了如何在 Go 對 MySQL 和 Scylla 做操作,而這兩個皆為較具規模的儲存引擎,而如果你想要做快取,資料只是 key-value 的格式,那你就無須用到前兩個資料庫,可以使用 Redis 來達到需求,本片就要來介紹 Go 語言與 redis 的搭配使用。

Redis環境

這裡一樣用 docker 起一個 redis資料庫,

$ docker run --name redis-lab -p 6379:6379 -d redis

docker 真的是很方便的好東西,這樣簡簡單單就可以建置環。

go-redis

Go 語言,也有支援 redis 操作的第三方套件,這邊是使用 go-redis 套件,這便先仔入好套件,

$ go get github.com/go-redis/redis

redis連線

這裡建立連線很簡單,應為在使用 docker 建立 redis 時,已經有 port-forward 到本機
的6379 port 了,所以 Addr 填入 localhost:6379:

c := redis.NewClient(&redis.Options{
    Addr:     "localhost:6379",
    Password: "",
    DB:       0, 
})

Set

這邊先 set 一筆資料,set 就好比 insert ,只要設定好一個 key 以及相對的 value,最後在設定資料過期的時間(不想讓資料過期就設為0) :

err := c.Set("user", "JC", 1000).Err() // => SET key value,1000 代表過期秒數,若不想設定,則帶入0,就不會過期
if err != nil {
    panic(err)
}

Get

再來就是 get 一筆資料,get 就好比 select,帶入自己想要查詢的 key,就會得到相對應的 value:

val, err := c.Get("user").Result() // Get value by key
if err != nil {
    panic(err)
}
fmt.Println("user:", val)

再來如果帶入不存在的的 key 值,就會直接 panic 掉。

Del

刪除則是用 Del,你可以執行以下程式,在用 Get 來確認是否能取得到值,如果取不到則是已經不存在該 key 值:

val, err := c.Del("user").Result() // Del value by key
if err != nil {
    panic(err)
}
fmt.Println("user:", val)

結語

今天帶來 Go 語言與 redis 的搭配使用,適合用在暫存以及快取型態的資料,感謝今天的閱讀,希望對你有幫助!


上一篇
Day26- Go with Scylla
下一篇
Day28-Go gRPC(上)
系列文
golang後端入門分享30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言