在Heroku上使用Go语言使用Redis To Go
首先
本次内容是关于在Heroku上执行Go语言时使用Redis插件的方法说明。
顺便提一下,在Heroku上运行Go的说明,可以参考这里之类的资料。
Heroku的环境变量
这是REDISTOGO_URL。
从这个环境变量中可以获取到的值包括以下内容。
redis://redistogo:<密码>@xxxxxx.redistogo.com:11068/ -> redis://redistogo:<密码>@xxxxxx.redistogo.com:11068/
操作步骤
我們這次使用以下的程式庫來存取Redis。
由于需要将从环境变量获取的内容重新填充到redis.Options中,因此如下所示。
package example
import (
"fmt"
"net/url"
"os"
"gopkg.in/redis.v2"
)
func redisExample() {
addr, password := getHerokuRedisAddr()
client := redis.NewTCPClient(&redis.Options{
Addr: addr,
Password: password,
})
defer client.Close()
// redisへアクセス(適当なコード)
fmt.Println(client.Get("hoge").Result())
}
// local実行用に環境変数がないときは`localhost:6379`を返します
func getHerokuRedisAddr() (addr string, password string) {
addr = "localhost:6379"
password = ""
redisURL := os.Getenv("REDISTOGO_URL")
if redisURL == "" {
return
}
redisInfo, err := url.Parse(redisURL)
if err != nil {
return
}
addr = redisInfo.Host
if redisInfo.User != nil {
password, _ = redisInfo.User.Password()
}
return
}
基本上,我已经确保了它可以在本地环境下运行。