在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
}

基本上,我已经确保了它可以在本地环境下运行。

广告
将在 10 秒后关闭
bannerAds