Day27- Go with Redis

前言

前两篇我们介绍了如何在 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 的搭配使用,适合用在暂存以及快取型态的资料,感谢今天的阅读,希望对你有帮助!


<<:  [前端暴龙机,Vue2.x 进化 Vue3 ] Day26. Vue3 Composition API 使用(二)

>>:  Day20-不能说的秘密(二)

[Angular] Day3. angular.json

在上一篇中介绍了什麽是 Angular CLI 与他可以提供许多方便功能,不过只是大概介绍他的用法与...

专案是实现使命、愿景,及战略的具体努力!

分享一些多年来专案管理及工作的心得: 专案是实现使命、愿景,及战略的具体努力。使命感、远见与作梦的能...

理解网际网路协定(二):浮动 IP、固定 IP、虚拟 IP,这麽多种 IP 都是什麽?

理解了 IP 位置的组成,我们接着来看看一些常被提到的相关名词:浮动、固定及虚拟 IP 位置。 浮动...

DAY 23 - 四足战车 (4)

大家好~ 我是五岁~~ 今天来继续画四足车车~~ 接续昨天的草稿图,因为没有要重新描绘一次线稿,所以...

【2022】 一键下载在线影片的六个办法(必收藏系列)

范先生推荐好物时间 本期要跟大夥介绍的是如何一键下载在线影片,适合多种网站,包括Xvideo,Por...